如何在C中编译时打印sizeof()的结果?
现在我使用静态断言(基于其他Web资源自酿)来将sizeof()结果与各种常量进行比较.虽然这有效但它远非优雅或快速.我还可以创建变量/ struct的实例并查看映射文件,但这比直接调用/命令/运算符更不优雅和快速.此外,这是一个使用多个交叉编译器的嵌入式项目......因此,为目标构建和加载示例程序然后读出一个值比上述任何一个都更麻烦.
在我的情况下(旧的GCC),#warning sizeof(MyStruct)在打印警告之前实际上并没有解释sizeof().
我想在#warning指令中打印一个宏值(展开宏).
例如,对于代码:
#define AAA 17
#warning AAA = ???
Run Code Online (Sandbox Code Playgroud)
所需的编译时输出将是
warning: AAA = 17
Run Code Online (Sandbox Code Playgroud)
我用什么???,或者,我如何扩充代码?
所以这可能是一个很长的镜头,但有没有办法将C或C++文件作为脚本运行?我试过了:
#!/usr/bin/gcc main.c -o main; ./main
int main(){ return 0; }
Run Code Online (Sandbox Code Playgroud)
但它说:
./main.c:1:2: error: invalid preprocessing directive #!
Run Code Online (Sandbox Code Playgroud) 如何typedef在 C 程序编译期间显示编译器对 a 的定义?
我知道我可以使用例如显示如何定义宏#pragma message,请参阅如何在编译时显示 #define 的值?,但我找不到typedefs 的类似程序。
能够typedef在编译时(或运行时)转储 s 定义可以帮助调试不是您自己编写的程序。