2017-01-13 6 views
4

Doxygen (1.8.10)은 이 내 문자열에 포함되어 있지 않다고 불평하고 있습니다. 여기에 문제Doxygen 문서화되지 않은 문자열 값

#include <string> 

struct MyStruct ///< Docs for struct 
{ 
    std::string a; ///< Docs for a 
    std::string b; ///< Docs for b 
}; 

class MyClass ///< Docs for class 
{ 
    static struct MyStruct instance; ///< Docs for instance 
}; 

struct MyStruct MyClass::instance = {"firstVal", "secondVal"}; 

나는 하나의 멤버로 구조체를 줄이고, 그 다음 경고가 사라 이니셜 라이저에서 "secondVal"를 제거하면이 경고

/tmp/example.cpp:10: warning: Member firstVal (variable) of class MyClass is not documented. 

결과를 보여줍니다 최소한의 예입니다, 하지만 분명히 해결책이 아닙니다. ...

+0

범용 초기화에서 작동합니까? 내가 생각하는 것은'struct MyStruct MyClass :: instance {{ "firstVal", "secondVal"}};' –

+0

그 _ 대부분의 효과, 그리고 작동 솔루션으로 이끌었을 것 같아요 (C++ 11/GCC 4.4 이상, 나는 더 휴대용 솔루션을 좋아할 것입니다.) 'MyStruct MyClass :: instance {{ "firstVal"}, { "secondVal"}};'(각각의 문자열 리터럴은 자신의 중괄호 집합입니다.) 컴파일러는이 장난감 예제로 @AndrewLazarus의 예제를 실제로 받아 들일 것이지만 잘못된 생성자를 호출하는 것 같습니다! 컴파일러 경고는 두 번째 인자에 대해'-Wmissing-field-initializers' ('-Wextra'의 일부)를 트리거 한 이후로 여러분의 친구입니다 ... – Alec

답변

3

struct을 삭제하면됩니다. 마찬가지로 :

#include <string> 

struct MyStruct ///< Docs for struct 
{ 
    std::string a; ///< Docs for a 
    std::string b; ///< Docs for b 
}; 

class MyClass ///< Docs for class 
{ 
    static struct MyStruct instance; ///< Docs for instance 
}; 

MyStruct MyClass::instance = {"firstVal", "secondVal"}; 

C++은 필요하지 않습니다 당신은 struct MyStruct를 사용하는 대신 당신이 MyStruct 그냥 평범한 사용할 수 있습니다. 이 작은 변화를 만들면 경고가 doxygen 1.8.13과 함께 사라집니다.

+0

글쎄, 이제 너는 나 자신을 시험해 보지 못한 것에 대해 바보가되게 만들었다. – Alec

-1

doxyfile의 EXTRACT_ALL 태그를 YES으로 설정하면 경고가 사라집니다.

는 또한 EXTRACT_ALL 설정에 대한 설명을주의 :

# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in 
# documentation are documented, even if no documentation was available. Private 
# class members and static file members will be hidden unless the 
# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. 
# Note: This will also disable the warnings about undocumented members that are 
# normally produced when WARNINGS is set to YES. 
# The default value is: NO. 

BTW 하나 더 팁 :

여러 줄의 실체에 대한 ///< 주석을 사용하지 마십시오.

: 당신이 ///< 주석을 사용하려는 경우

/** 
* Docs for struct 
*/ 
struct MyStruct 
{ 
    std::string a; ///< Docs for a 
    std::string b; ///< Docs for b 
}; 

/** 
* Docs for class 
*/ 
class MyClass 
{ 
    static struct MyStruct instance; ///< Docs for instance 
}; 

그렇지 않으면, 당신은 선언의 세미콜론 후 주석을 넣어 가지고 : 당신이 당신의 코드를 이런 식으로 언급 경우 문서의 결과는 더 잘 볼 것

struct MyStruct 
{ 
    std::string a; ///< Docs for a 
    std::string b; ///< Docs for b 
}; ///< Docs for struct 

class MyClass 
{ 
    static struct MyStruct instance; ///< Docs for instance 
}; ///< Docs for class 
+0

_techically_ 이것은 경고를 사라지게하지만 대신에 'firstVal'은 실제로 생성 된 문서에서 분명히 나빠집니다. (또한 비 장난감 코드는 어디서나'/ ** * /'스타일 주석을 사용합니다. 더 읽기 쉬운 예제 코드를 위해 한 줄에 모두 채워 넣었습니다.) – Alec

+0

@Alec 죄송 합니다만, "속성"항목을 인식하지 못했습니다. 그냥 괜찮아 보이는'MyStruct'의 문서를 보았습니다. 팁에 관해서 : 당신이 보내준 샘플 코드가 문서에서 원하지 않는 문자를 생성했기 때문에 나는 당신과 잘 어울렸다. – gmug

관련 문제