首页 > 试题广场 >

C++里面如何声明const void f(void)函数为

[单选题]
C++里面如何声明const void f(void)函数为C程序中的库函数。
  • static "C"
  • extern "C"
  • explict "C"
  • register "C"
void f(void)用c++ compiler来编译,在产生的obj文件中的名字变成了

$f@@@_@0

void f(voi)用c compiler编译,obj中变成了

_f

如果是extern "C" void f(void),仍然用c++编译器编译,变成

_f

所以extern "C"是强迫c++编译器对函数名进行修饰的时候采用c命名约定。

这样,在c++写的程序中就可以使用已经用c编译器编译好的obj或者lib了。
发表于 2015-05-26 14:52:00 回复(3)
external 作用之一: 当它与 “C” 一起连用时,如:extern “C” void fun(int a , int b);会告诉C++编译器在编译fun这个函数名是按着C的规则去翻译相应的函数名而不是C++的,C++的规则在翻译这个函数名时会把fun这个名字变得面目全非。。。
发表于 2017-06-25 09:51:34 回复(0)
extern "C"是强迫c++编译器对函数名进行修饰的时候采用c命名约定。 

这样,在c++写的程序中就可以使用已经用c编译器编译好的obj或者lib了。
发表于 2017-09-06 16:12:26 回复(0)
explict是防止单参数的构造函数在创建对象的时候进行隐式类型转换。
发表于 2021-02-26 20:12:47 回复(0)

extern”C” 的作用

在C++ 中调用 C 语言的函数,告诉编译器不要对函数名进行改名,,保证C++ 代码能够正确的链接并调用 C 语言中的函数。

发表于 2023-11-10 14:23:15 回复(0)
在该函数前添加extern “C”声明
发表于 2014-11-13 15:26:25 回复(0)
有没有佬解释一下ACD
发表于 2023-10-06 23:02:13 回复(0)
extern "C"是强迫c++编译器对函数名进行修饰的时候采用c命名约定。 
发表于 2019-08-11 10:31:28 回复(0)
extern “C”表示函数编译命名使用c编译器的规则
发表于 2017-08-15 04:06:23 回复(0)