2015-01-22 2 views
1

이것은 Doxygen을 사용해 보았던 작은 실험입니다.동일한 이름을 가진 Doxygen 및 여러 #defines

h1.h :

class A 
{ 
    public: 
     int func1(); 
} 

f1Data.h :

#define val 10 

f1.cpp :

#include "h1.h" 
#include "f1Data.h" 

int A::func1() 
{ 
    return val; 
} 

h2.h :

내가 6 개 파일을 말해봐
#include "h1.h" 

class B: public A 
{ 
    public: 
     int func2(); 
}; 

f2Data.h

#define val 20 

f2.cpp

#include "h2.h" 
#include "f2Data.h" 

int B::func2() 
{ 
    return val; 
} 

나는 넣었을 때 GENERATE_XML = 예와 CALL_GRAPH = 내 구성 파일 및 실행 doxygen에, 나는 생성 된 XML 파일의 버그를 참조 예 . 특히, 나는 A :: func1()의 참조 중에서 f2Data.h의 #defined 값이 f1Data.h의 #defined 값 대신에 주어진 것을 볼 수 있습니다. 이는 매크로의 이름이 두 파일 [이 경우, val]에서 모두 같은 경우에만 발생합니다.

누군가 doxygen이있는 버그이거나 내 부분에서 doxygen을 잘못 사용했는지 알 수 있습니까? 코드를 처리하는 동안

답변

0

Doxygen을은 가정의 몇 가지를 만드는 : 헤더가 제대로 보호하는

  1. 을 (그래서 그들은 한 번만 처리해야).
  2. 공개 기호 이름은 단일 프로젝트 내에서 고유합니다.

이들은 일반적으로 좋은 프로그래밍 습관이지만 예제에 나와있는 것처럼 C에 의해 시행되지는 않습니다.

위의 두 규칙을 준수하지 않으면 doxygen의 결과가 올바르지 않을 수 있습니다.

+0

C++가 아니라 C –

+0

답장을 보내 주셔서 감사합니다. 그것은 내 upvote가 있지만, 나는 필요한 평판이 필요 없어! –

관련 문제