Doxygen이 생성한 문서에 C 언어에 대한 매크로 정의가 없을 수 있음 조사
2856 단어 doxygen
가장 가까운 Doxygen 을 사용합니다.
PS > doxygen.exe -V
1.9.2 (caa4e3de211fbbef2c3adf58a6bd4c86d0eb7cb8)
with clang support 5.0.0.
현상.test.h는 문서를 생성하지 않을 파일입니다.
그러나 메모 문에는 Mardown의 코드 블록의 시작에 해당하는 설명이 있습니다.
test.h
/***********
* ~~~
***********/
test.c는test입니다.포함test.c
/*! @file */
/*!
* comment
*/
#define AAA
#include "test.h"
/*!
* comment
*/
#define BBB
Doxygen의 설정이 예처리를 처리하는 것이 가장 좋다고 판단하여 추가INCLUDE_PATH
.기타 설정은 기본값으로 유지됩니다.MyDoxyfile
INCLUDE_PATH = "test.h の配置されているディレクトリのパス"
Doxygen을 실행하면 다음과 같이 경고가 출력됩니다.PS > doxygen.exe MyDoxyfile | Out-Null
test.c:13: warning: documentation for unknown define BBB found.
생성된 HTML 파일에는 없습니다BBB
.원인의 추측
https://github.com/doxygen/doxygen/blob/Release_1_9_2/src/pre.l의 처리.
사전 처리 테스트.5등.h의 내부 순항 테스트를 찾았습니다.h의 해석으로 전환합니다.
test.h의 해석에서
~~~
가 닫히지 않았기 때문에 SkipVerbatim
도착<<EOF>>
을 유지합니다.test.c
SkipVerbatim
로 돌아가도 분석BBB
이 진행되어 정의를 정상적으로 분석할 수 없다.분석할 파일의 전환은 flex
yy_switch_to_buffer()
를 사용합니다.flex 문서에서 설명
yy_switch_to_buffer()
은 시작 상태를 바꾸지 않습니다.https://github.com/westes/flex/blob/v2.6.4/doc/flex.texi#L2041
Note also that switching input sources via either @code{yy_switch_to_buffer()} or @code{yywrap()} does @emph{not} change the start condition.
회피 전략 1
Doxygen 설정은 사용하지 않습니다
INCLUDE_PATH
.회피 전략 2
포함 후 즉시 닫기
~~~
.test_new.c
/*! @file */
/*!
* comment
*/
#define AAA
#include "test.h"
/*
* ~~~
*/
/*!
* comment
*/
#define BBB
Doxygen을 실행할 때 경고가 출력되지 않습니다.PS > doxygen.exe MyDoxyfile | Out-Null
생성된 HTML 파일은 BBB
입니다.Reference
이 문제에 관하여(Doxygen이 생성한 문서에 C 언어에 대한 매크로 정의가 없을 수 있음 조사), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ayweak/items/d0f4d414423844c9cbf6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)