上述代码段中:__cplusplus是一个C++规范规定的预定义宏;现代C++编译器都预先定义了它,而所有的C语言编译器则不会;
【注】:按照规范__cplusplus的值应该等于199711L,然而并不是所有的编译器都照此规范,比如g++编译器下__cplusplus的值为1。
上述代码段,如果再C编译器下,内容等价如下:
因为C语言编译器没有定义_cplusplus;
1. extern "C"功能:为了能够正确的在C++代码中调用C语言的代码;
在程序中加上extern "C"后,相当于告诉编译器这部分代码是C语言写的,因此要按照C语言进行编译,而不是C++;
2. 哪些情况下使用extern "C":
(1)C++代码中调用C语言代码;
(2)在C++中的头文件中使用;
(3)在多个人协同开发时,可能有人擅长C语言,而有人擅长C++;
3. C++语言允许函数重载;但C语言是一门单一名字空间的语言,不允许函数重载;
为了能在C++程序里调用C语言程序,C++引入了链接规范,格式:extern "language string";
如下,在C++程序中调用C程序:
参考文章:
1. 非常详细 https://www.cnblogs.com/TenosDoIt/p/3163621.html