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.cSkipVerbatim로 돌아가도 분석BBB이 진행되어 정의를 정상적으로 분석할 수 없다.
분석할 파일의 전환은 flexyy_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입니다.

좋은 웹페이지 즐겨찾기