c 程序 static_assert() char 位=16

c program static_assert() char bit=16

这段代码中的CHAR_BIT==16是什么意思?它不编译,我不明白原因以及将要放入什么代码才能编译?

    #include <stdio.h>
    #include <stdlib.h>
    #include <assert.h>
    static_assert(CHAR_BIT==16,"16 bit falsely assumed");
    int main()
    {
        puts("hello world this");
        return 0;
    }

CHAR_BIT<limits.h> 中定义。您需要将其包含在代码中才能编译。

CHAR_BITlimits.h 中定义的宏。它提到了 char 中的位数。大多数系统使用 8 位,但也有更少(7 位)或更多的架构。

在您的代码中,断言正在检查,如果系统将 16 位用于 char,则只有代码会编译。

注意:根据您的编译器版本和支持,您可能需要改用 _Static_assert