cnd*_*cnd 14 c conditional-compilation
我用于#ifdef Win32
安全通话,sprintf_s
但现在我想用MinGW建立项目,现在它错了.我需要使用#ifdef VC++
或以某种方式.可能吗?
Ani*_*nge 40
#ifdef __clang__
/*code specific to clang compiler*/
#elif __GNUC__
/*code for GNU C compiler */
#elif _MSC_VER
/*usually has the version number in _MSC_VER*/
/*code specific to MSVC compiler*/
#elif __BORLANDC__
/*code specific to borland compilers*/
#elif __MINGW32__
/*code specific to mingw compilers*/
#endif
Run Code Online (Sandbox Code Playgroud)
您最好使用便携式符号.我理解有时可能没有定义这些符号,因此您可以看到Predef项目,其中包含有关标准,编译器,库,操作系统和不可移植的体系结构的预处理器宏的广泛列表.
但是,您在此问题中特别提及的功能已作为附件K.3(边界检查接口(库))的一部分包含在C11标准中.
K.3.1.1p2说明:
K.3及其子条款中声明或定义的函数,宏和类型由它们各自的头部声明和定义,如果
__STDC_WANT_LIB_EXT1__
定义为宏,它在源文件中的点处扩展为整数常量1,其中适当的头是首先包括在内
因此,您应该优先选择检查__STDC_WANT_LIB_EXT1__
,并且仅在不存在时使用特定于编译器的符号.