/Zc:__STDC__(启用 __STDC__ 宏)

/Zc:__STDC__ 编译器选项在 C 代码中将内置的 __STDC__ 预处理器宏定义为 1。

语法

/Zc:__STDC__

备注

/Zc:__STDC__ 编译器选项实现 __STDC__ 预处理器宏的标准 C 符合性行为,在编译 C11 和 C17 代码时将其设置为 1。

/Zc:__STDC__ 选项是 Visual Studio 2022 版本 17.2 中新增的。 此选项默认处于关闭状态,但在指定 /std:c11/std:c17 时可以显式启用。 该选项没有更早的版本。

此选项是源中断性变更。 由于 UCRT 的行为(在 __STDC__1 时不公开 POSIX 函数),所以在不对稳定语言版本引入中断性变更的情况下,不可能默认为 C 定义此宏。

示例

// test__STDC__.c
#include <io.h>
#include <fcntl.h>
#include <stdio.h>

int main() {
#if __STDC__
    int f = _open("file.txt", _O_RDONLY);
    _close(f);
#else
    int f = open("file.txt", O_RDONLY);
    close(f);
#endif
}

/* Command line behavior

C:\Temp>cl /EHsc /W4 /Zc:__STDC__ test__STDC__.c && test__STDC__

*/

在 Visual Studio 中设置此编译器选项

  1. 打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性

  2. 选择“配置属性”>“C/C++”>“命令行”属性页

  3. 在“其他选项”中,添加 /Zc:__STDC__。 选择“确定”或“应用”以保存更改。

另请参阅

/Zc(一致性)
/std(指定语言标准版本)