extern“C”作用有那些,请详细说明
时间: 2024-05-26 15:11:36 浏览: 22
extern "C" 是一个标记,用于告诉编译器编译函数时要按照 C 语言的规则进行编译,而不是 C++ 语言的规则。主要用于处理 C++ 和 C programming language 命名混编的问题。
具体来说,extern "C" 可以有以下作用:
1. 解决函数名称带有符号信息的问题:C++ 函数内部会在函数名前面添加类型信息,例如 int function() 会被编译为 _function_i,但是 C 语言不会在函数名前面添加类型信息,为了解决这个问题,我们可以使用 extern "C" 来告诉编译器按照 C 语言的规则进行编译。
2. 解决函数在 C++ 中的命名问题:C++ 允许函数的名称相同,但是参数不同,例如 int function(int a),float function(float b),但是在 C 语言中同名的函数不允许存在,为了解决这个问题,我们可以使用 extern "C" 来告诉编译器不要按照 C++ 的规则进行命名,而是按照 C 的规则进行命名。
3. 解决 C++ 库在 C 中的调用问题:C++ 编译后会有一些 C++ 特有的代码,这些代码在 C 编译器中无法识别。为了解决这个问题,我们可以使用 extern "C" 来告诉编译器按照 C 语言的规则进行编译,使得 C 语言编译器可以正确识别这样的库。
总之,extern "C" 可以用来解决 C++ 和 C 语言的混编问题,确保 C++ 代码可以被 C 语言编译器正确编译。
相关问题
c加加中使用extern“C”作用有那些,请详细说明
好的,我明白了。关于extern "C"在C++中的作用,主要有以下几个方面:
1. 解决C++和C语言的链接问题
由于C++支持函数重载,函数名会经过C++的名字重整,与C语言的函数名不同,所以在C++中调用C语言编写的函数时存在链接错误。而使用extern "C"可以将函数名修改为C语言的命名规则,解决链接问题。
2. 解决C++函数名重载问题
在C++中,如果两个函数名相同但参数不同,那么它们被编译器处理后的名字也是不同的。但是在某些情况下,我们可能需要使用相同的函数名,比如在链接时需要将不同目标文件中的同名函数进行合并。这时,就可以使用extern "C"将函数名统一为C语言的命名规则,避免函数名重载问题。
3. 定义C语言接口
某些操作系统或编程语言的API可能是使用C语言编写的。在C++中,如果我们需要使用这些API,我们需要使用extern "C"将这些函数的声明和定义修改为C语言的命名规则,并且将它们放在extern "C"块中,以确保正确的符号导出。这样,我们就可以在C++中使用C语言接口了。
希望可以解决您的疑惑。
c加加常见的关键字有哪些,请详细说明
c加加常见的关键字包括:int、char、float、double、void、if、else、while、for、switch、case、break、continue、return、struct、union、typedef、static、const、volatile、register、extern、inline等。
这些关键字具有特定的含义,例如int表示整型数据类型,char表示字符型数据类型,if和else用于编写条件判断语句,while和for用于编写循环语句,switch和case用于编写多条件分支语句,break和continue用于控制循环语句的执行流程,return用于结束函数并返回值等。
在C++中,关键字还可以用于定义类和对象、函数重载、运算符重载、命名空间等。熟练掌握这些关键字对于编写高质量的C++代码至关重要。