/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 中设置此编译器选项
打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性。
选择“配置属性”>“C/C++”>“命令行”属性页。
在“其他选项”中,添加
/Zc:__STDC__
。 选择“确定”或“应用”以保存更改。