版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

仓库源文站点原文


title: 随笔 - C 语言中的编译期检测版assert "-!!(e)" categories:


https://stackoverflow.com/questions/9229601/what-is-in-c-code 看到个有趣的东西

<!-- more -->

众所周知, assert() 会在程序运行到相关代码时检验返回值的值, 如果为0则终止程序运行并输出指定错误信息

实际上, 我们可以通过如下手段实现在编译期进行检验

{% icodeweb blog lang:c draft-004/_static_assert.c %}

我们把它拆开来看

到这里就已经很清楚了, 占-1个位的变量自然是无法声明的, 而占0个位的变量可以声明, 且不会对程序造成任何影响

如果看不懂可以自行搜索位域(bitfield)