__CYGWIN32__:32bit版本Cygwin 6)__BORLANDC__:Borland C++编译器 区分不同语言及其版本 1)__cplusplus:区分C与C++代码 gcc编译.c文件,没定义__cplusplus,编译器按C编译代码; gcc编译.cpp文件,定义了__cplusplus,编译器按C++编译代码; g++编译.c文件,定义了 __cplusplus,编译器按C++编译代码; g++编译.cpp...
例如,GCC 编译器对应的预定义宏是 __GNUC__,用 if __GNUC__即可判断是否在使用 GCC 编译器。__GNUC__ 的具体值对应GCC的主版本号。例如 对于GCC 4.9 ,__GNUC__ 等于 4,对于 GCC 5.1 ,__GNUC__ 等于 5,次版本号可以通过 __GNUC_MINOR__ 查询。对于 GCC 4.9,__GNUC_...
SIZE_MAX 就是定义了 size_t 类型最大值的宏常量。因此,如果 SIZE_MAX 为 2 ^ 64 - 1,那就...
判断当前系统位宽,最简单而且跨编译器的方法是sizeof(void*)。但是,这不是预处理期的东西。如果使用...
在C语言中,编译宏是一种强大的特性,它允许开发者在预处理阶段(即编译之前)对代码进行条件编译。这意味着基于某些宏的定义与否,编译器可以选择性地包含或排除代码块。下面我将分点解释编译宏的作用、展示其用法,并提供一个简单的示例代码。 1. 编译宏在C语言中的作用 编译宏在C语言中的作用主要体现在以下几个方...
__cplusplus是一个C++规范规定的预定义宏。你可以信任的是:所有的现代C++编译器都预先定义了它;而所有C语言编译器则不会。另外,按照规范__cplusplus的值应该等于1 9 9 7 1 1 L ,然而不是所有的编译器都照此实现,比如g++编译器就将它的值定义为1。 所以,如果上述代码被C语言程序引用的话,它的内容就等价于...
某些编译器不支持内容为空的宏(如BCB6)。这时只有手动#if做兼容性处理了。 全部代码 预定义宏的数据来自——C11标准、C++11标准,及VC、BCB、Intel、GCC这些编译器。 最初想删除重名的宏,后来考虑到需要对照各个编译器的手册,所以还是允许重名比较好。
1 内置的宏定义 2 运行平台宏 3 编译器宏 4 调试类型宏 5 代码 C和C++内置宏在代码调试、跨系统平台代码中会经常使用,本文记录说明一下。内置宏不需要调用头文件,可直接使用。在使用预定义的宏之间需要了解常用的条件编译指令,具体...
(1)如果是要你的代码在编译时发现编译器类型,就判断_cplusplus或_STDC_宏,通常许多编译器还有其他编译标志宏,#ifdef __cplusplus cout<<"c++";#else cout<<"c";#endif 如果要判断已经编译的代码的编译类型,就⽤nm查⼀下输出函数符号是否和函数名相同。(相同为c,不同为c++。详解见下⾯)(2)简单...