Doxygen Preprocessor 와 #if 1 #endif 옵션
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:
첨부 | 파일 크기 |
---|---|
![]() | 1.67 KB |
![]() | 818바이트 |
![]() | 65.57 KB |
댓글 달기