extern "C++"是什么意思?

winmain 2002-05-17 05:22:49
在SGI中有不少该语句。请高手指点!
...全文
87 点赞 收藏 15
写回复
15 条回复
Q_O 2002年05月22日
输出一个C++函数。
回复 点赞
codingcoding 2002年05月21日
这个是和连接规则有关系的。连接规则的用处是,你声明了一个连接规则。并不是意味着你的函数是用这种语言写的。而是这个函数象用这种语言写的函数那样被调用。在c++的编译器里,所有函数的默认的连接声明都是extern "c++"。这样。如果你想以c的形式调用以个函数,那么在它的前面加extern "c".
如果你的一个函数是用c方式连接的话,那么指向这个函数的指针也必须是以c的方式连接。例如:
extern "C" {
int fc(int);
int (*fp1)(int) = fc;
}
如果都是c++的,那么不用写extern "c++"
int fcpp(int);
int (*fp2)(int) = fcpp; // Both have C++ linkage
还有,在下面如果composer是个c函数

extern "C" void composer( int(*)(int) );
extern "C++" int foo(int);
composer( foo ); // Mismatch
这个是不匹配的。
在这种情况下,你必须写个包装函数
extern "C" void composer( int(*)(int) );
extern "C++" int foo(int);
extern "C" int foo_wrapper(int i) { return foo(i); }
composer( foo_wrapper ); // OK


extern "C++" 就是这样的用处。
回复 点赞
step_by_step 2002年05月21日
extern "c"是用c语言的一些连接规则,可以防止c++编译器对被连接的函数进行名字粉碎。
extern "c++"偶没有见过,因该和extern差不多,也是按照c++的规定进行连接。
回复 点赞
winmain 2002年05月21日
babysloth帮忙呀!
回复 点赞
winmain 2002年05月20日
我问的是什么意思!!!!!!!!!!!!!!!!!!
回复 点赞
zhaoweikid 2002年05月20日
extern "c" 表示函数使用C的连接方式,也就是说能被C语言写的程序调用(C和C++的连接方式是不一样的)。
联想 extern "C++"大概也知道了吧
回复 点赞
codingcoding 2002年05月19日
extern "C" and extern "C++" 都是c++所支持的。
回复 点赞
winmain 2002年05月18日
//VC的SERVPROV.H中的摘录
#if defined(__cplusplus) && !defined(CINTERFACE)

#if (_MSC_VER >= 1200) // VC6 or greater
extern "C++"
{
#endif
回复 点赞
LLnju 2002年05月18日
没见过
回复 点赞
sbg 2002年05月18日
只见过extern "C",没见过extern "C++"
回复 点赞
chen3feng 2002年05月18日
表示采用C++的命名约定,类似的还有别的,比如Fortran,当然,要一个厂家的编译器
回复 点赞
winmain 2002年05月18日
可不可解释清楚一点,最好举例。版主帮忙呀
回复 点赞
sheve 2002年05月17日
只见过extern "C",没见过extern "C++",如果确实存在的话,可能是某种编译器实现的一个扩展。
回复 点赞
liujuntao 2002年05月17日
将C++中的库函数放入C中
回复 点赞
kary 2002年05月17日
只见过extern "C"表示输出C函数接口。
没见过extern "C++"
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告