Doxygen Preprocessor 와 #if 1 #endif 옵션

evanlee의 이미지

Doxygen에 질문 있습니다.

#if 1

#else

#endif
라는 옵션 구문이 많이 있습니다. Doxygen에서는 C preprocessor가 내장되어 있어 Preprocessor option을 "YES"하면 Preprocessor에서 막힌 코드는 걸러진다고 합니다.

그런데...
DOT diagram을 보면
00030 {
00031 #if 1
00032 c();
00033 #else
00034 d();
00035 #endif
00036 }

d()함수가 호출되는 diagram이 나옵니다. 수백까지 방법을 써 봤으나 항상 d()함수가 호출되는 그림이 나옵니다.

Window, cygwin bash상에서 해봤으나 동일합니다.
고수님들 혹시 아시는 것이 있으신지요?

아래는 사용된 코드와 옵션 입니다.
첨부는 옵션 파일입니다.

#define DoxyTEST
#define aaa int

void main()
{
#ifdef DoxyTEST
aaa 1 = 0 ;
#ifndef DOXYGEN_SHOULD_SKIP_THIS
a();a();a();a();

/* code that must be skipped by Doxygen */
#else
b();
#endif /* DOXYGEN_SHOULD_SKIP_THIS */

#else
b();
#endif
}

#if 1
void a(){
#if 1
c();
#else
d();
#endif
}

void b(){
#if 1
e();
#else
f();
#endif
}
#endif

voic c(){}
voic d(){}
voic e(){}
voic f(){}

void a ( )

Definition at line 30 of file a.c.

References c(), and d().

Referenced by main().

00030 {
00031 #if 1
00032 c();
00033 #else
00034 d();
00035 #endif
00036 }

Here is the call graph for this function:

Here is the caller graph for this function: