如何在C中编译时打印sizeof()的结果?
现在我使用静态断言(基于其他Web资源自酿)来将sizeof()结果与各种常量进行比较.虽然这有效但它远非优雅或快速.我还可以创建变量/ struct的实例并查看映射文件,但这比直接调用/命令/运算符更不优雅和快速.此外,这是一个使用多个交叉编译器的嵌入式项目......因此,为目标构建和加载示例程序然后读出一个值比上述任何一个都更麻烦.
在我的情况下(旧的GCC),#warning sizeof(MyStruct)在打印警告之前实际上并没有解释sizeof().
可能重复:
是否可以在编译时打印出C++类的大小?
我可以在编译时输出对象的大小吗?由于编译器在编译源文件时已经有了这些信息,我可以看到它(在编译时)而不是经历在我的应用程序控制台或调试输出窗口中某处输出大小的漫长过程吗?
这将非常有用,尤其是当我能够编译单个源文件时,这为我在处理大型项目时节省了大量时间.
是否可以在编译期间将动态信息输出到编译器输出?
一个更具体的例子(C++ 11):
static_assert(sizeof(A) == 4, "Wrong size of A");
Run Code Online (Sandbox Code Playgroud)
我想输出sizeof(A)断言失败(或者甚至总是)的值,但是消息中static_assert不能包含任何动态信息.
有没有办法输出sizeof(A)编译器日志的值?