cplusplus宏
#ifdef __cplusplus是什么意思? -
ifdef __cplusplus } endif 上面代码的意思:如果编译器在编译cpp文件,那么__cplusplus宏就会被定义;如果是一个c文件在被编译那么__STDC__宏就会被定义。如果整个程序是用C++写的,那么在C++里面写C要加上extern "C " {}进行说明。至于extern "C"这个指示编译器生成符号表时不改变标识符的名字。
cplusplus_redef 允许在命令行中通过-D 选项重新定义以常规方式预定义的宏__cplusplus。不允许在源代码中使用#define 指令重新定义__cplusplus。示例:CC —features=cplusplus_redef —D__cplusplus=1 后面会介绍。g++ 编译器通常将__cplusplus 宏预定义为1,而某些源代码可能依赖于此非标准值。(对于后面会介绍。
ifdef __cplusplus } endif 上面代码的意思:如果编译器在编译cpp文件,那么__cplusplus宏就会被定义;如果是一个c文件在被编译那么__STDC__宏就会被定义。如果整个程序是用C++写的,那么在C++里面写C要加上extern "C " {}进行说明。至于extern "C"这个指示编译器生成符号表时不改变标识符的名字。
cplusplus_redef 允许在命令行中通过-D 选项重新定义以常规方式预定义的宏__cplusplus。不允许在源代码中使用#define 指令重新定义__cplusplus。示例:CC —features=cplusplus_redef —D__cplusplus=1 后面会介绍。g++ 编译器通常将__cplusplus 宏预定义为1,而某些源代码可能依赖于此非标准值。(对于后面会介绍。
首先,_cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入"extern "C"{" 和" }"处理其中的代码,其中{ }内部的代码是通过extern"C"进行处理。要明白为何使用extern"C",还得从cpp中对函数的重载处理好了吧!
一般用于将C++代码以标准C形式输出(即以C的形式被调用),这是因为C++虽然常被认为是C的超集,但是C++的编译器还是与C的编译器不同的。C中调用C++中的代码这样定义会是安全的。一般的考虑跨平台使用方法如下:ifdefined(__cplusplus)||defined(c_plusplus) //跨平台定义方法extern "C"{ endif /等我继续说。
C语言 NULL在哪个头文件 -
NULL宏是定义在标准库头文件stddef.h中。宏定义如下:undef NULL #if defined(__cplusplus)#define NULL 0#else#define NULL ((void *)0)#endif可以看出c++中NULL为(int)0 , C中NULL为(void*)0。看来C和C++中NULL宏的值略有不同。
误区二:gcc不会定义__cplusplus宏,而g++会实际上,这个宏只是标志着编译器将会把代码按C还是C++语法来解释,如上所述,如果后缀为.c,并且采用gcc编译器,则该宏就是未定义的,否则,就是已定义。误区三:编译只能用gcc,链接只能用g++ 严格来说,这句话不算错误,但是它混淆了概念,应该这样说:..
C语言中 #ifdef cplusplus #define _EXTERN_C extern"c" #else #defi...
一般的考虑跨平台使用方法如下:ifdefined(__cplusplus)||defined(c_plusplus) //跨平台定义方法extern "C"{ endif //后面会介绍。 正常的声明段ifdefined(__cplusplus)||defined(c_plusplus)} endif 简单的用在windows下可以如下定义:ifdef __cplusplus extern "C"{ //后面会介绍。 正常的声明段} endif后面会介绍。
注:C++有内置的宏__cplusplus ---有个习惯带“_”表示内部变量,只供内部使用;不带双下划线的,表示外部接口的变量(标识符) C++函数的三种传递方式为:值传递。指针传递和引用传递注:值传递和指针传递,本质上就是指针传递。在A类中fun1是虚函数;B类中fun2是虚函数。①:机制上:c是面向过程的(c也可以希望你能满意。
C++中 __FILE__什么意思啊 -
ANSI C标准中几个标准预定义宏:_LINE__:在源代码中插入当前源代码行号;_FILE__:在源文件中插入当前源文件名;_DATE__:在源文件中插入当前的编译日期__TIME__:在源文件中插入当前编译时间;_STDC__:当要求程序严格遵循ANSI C标准时该标识被赋值为1;_cplusplus:当编写C++程序时该到此结束了?。
要包含头文件stddef.h,因为定义在该文件中,