マクロから派生した値を持つ静的初期化子を持つ C コードがいくつかあります。これらの初期化子は、本質的に私のコードの外部 API です。初期化値が簡単に見えるように、コードのドキュメントを自動生成する方法を探しています。
たとえば、以下は非常に単純化された C プログラムです #include
typedef unsigned int u32;
#define Q 5
#define W 7
#define BaseNum 0x1000
#define CalculateNumber(x) (BaseNum + x)
#define SomeOtherCalc(x,y) (x<<y)
typedef struct
{
u32 a;
} foo;
typedef struct
{
foo f;
} bar;
static const bar myVar[] =
{
{
.f = {
.a = CalculateNumber(SomeOtherCalc(Q,W))*sizeof(u32),
},
},
{
.f = {
.a = CalculateNumber(SomeOtherCalc(W,Q))*sizeof(u32),
},
},
};
void main(void){}
そのプログラムを考えると、自動生成されたドキュメントを取得したいと思います
- 変数 myVar には 2 つの要素があります
- .f フィールドが消費するバイト数
- myVar の各要素の .fa フィールドの値
gcc -Eを使用して GCC から直接その情報の一部を取得できますが、 .fa の値も sizeof() も数値に完全には解決されません。探しているものを取得する方法についてのアイデアはありますか (できれば Doxygen を使用せずに)?