extern "C"的功能和用法研究

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sss_369/article/details/84060561

                                         

上述代码段中:__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

猜你喜欢

转载自blog.csdn.net/sss_369/article/details/84060561