2017-08-30 14 views
1

内部のマクロを使用しているとき、私は構造体を持っている、と慣例によって、私はその型の変数を宣言するために、特定のマクロを使用する必要があります。Doxygenの警告匿名構造体

構造体:

struct basic_struct { 
    int a; 
    int b; 
}; 

マクロ:

#define BASIC_VAR(var_name) struct basic_struct var_name 

匿名構造体の内部でこのマクロを使用するときに、次のように私は、Doxygenのに問題が発生しました:

マクロ

struct { 
    struct basic_struct var_1; 
    int var_2; 
} my_struct; 

2)をドロップ

1)

struct my_struct_t { 
    BASIC_VAR(var_1); 
    int var_2; 
} my_struct; 

Iを匿名構造体を使用していない:とき

warning: no uniquely matching class member found for BASIC_VAR(var_1) 

struct { 
    BASIC_VAR(var_1); 
    int var_2; 
} my_struct; 

私はDoxygenの警告が表示されます警告を出さないings。 しかし、私はマクロを使用しなければなりません。匿名の構造体を使い続けることを好みます。この警告を避けるために使用できるDoxygenコマンドがありますか?

+1

なぜマクロを使用する必要がありますか? –

答えて

2

Doxygenでマクロを展開できるように、MACRO_EXPANSIONYESをDoxyfileに設定する必要があると思います。 https://www.stack.nl/~dimitri/doxygen/manual/preprocessing.html

さらに、マクロをPREDEFINEDタグに追加する必要があります。 、スペースなし

1)MACRO_EXPANSIONタグは、所定のタグに

2)YESに設定されたマクロは、=演算子と続く追加されていることを確認し、私が使用

+1

OKこれはすでにYESに設定されていましたが、そのリンクを見て、 "BASIC_VAR(var1)="をPREDEFINEDタグに追加すると問題が解決しました!何らかの理由で、EXPAND_ONLY_PREDEFタグをNOに設定していませんでした。とりあえずありがとう! –

0

回避策はDoxyfileというを編集しました私の場合:BASIC_VAR(var_1)=

何らかの理由で、MACRO_EXPANSIONタグをYESに設定し、EXPAND_ONLY_PREDEFをNOに設定しても機能しませんでした。

関連する問題