免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7457 | 回复: 10
打印 上一主题 下一主题

请教在头文件中加入extern "C" {} 是什么意思? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-01-08 14:50 |只看该作者 |倒序浏览
我有一个朋友在VC++下搞开发。

在他的工程里有.c为后缀的文件(即c文件),他在.ccp的文件中调用这个c文件中的函数(包含.c的头文件,然后用里面的函数),编译的时候可以通过,但链接的时候会提示”unresolved external symbol 函数名“(即没有找到c中的函数体)。

后面我叫他在c的头,用下面的方式来定义函数,就通过了:



  1. #ifdef  __cplusplus
  2. extern "C" {
  3. #endif

  4. //在此处定义函数

  5. #ifdef  __cplusplus
  6. }
  7. #endif
复制代码


现在我虽知道这样用,但我并不知道是什么意思,那位大侠能说说吗?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-01-08 14:53 |只看该作者

请教在头文件中加入extern "C" {} 是什么意思?

就是为了在c++中引用c的库函数,才这样定义的。
因为c++的编译器会对函数名和变量名做一些修正,
如果也对c中的函数名和变量名也做修正,就会出现上述问题。
这样定义后,c++编译器知道这是c中的函数名和变量名,不会
对它们做修正,就可以正常使用了。

论坛徽章:
0
3 [报告]
发表于 2004-01-08 14:58 |只看该作者

请教在头文件中加入extern "C" {} 是什么意思?

高,实在是高
我也明白个大概的意思,可就是不知道该怎么叙述,结果被联想兄几句话就搞定了,看来联想兄的语文水平也很高!

论坛徽章:
0
4 [报告]
发表于 2004-01-08 15:01 |只看该作者

请教在头文件中加入extern "C" {} 是什么意思?

原帖由 "lenovo" 发表:
就是为了在c++中引用c的库函数,才这样定义的。
因为c++的编译器会对函数名和变量名做一些修正,
如果也对c中的函数名和变量名也做修正,就会出现上述问题。
这样定义后,c++编译器知道这是c中的函数名和变量名,..........


谢谢lenovo!

我刚才翻了一下书,还发现__cplusplus是用来判断用的是c还是c++编译器的。



  1. #ifdef _cplusplus
  2.   //是表示用C++编译器
  3. #else
  4.   //是表示用C编译器
  5. #endif
复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2004-01-08 15:03 |只看该作者

请教在头文件中加入extern "C" {} 是什么意思?

原帖由 "lonemoon" 发表:
高,实在是高
我也明白个大概的意思,可就是不知道该怎么叙述,结果被联想兄几句话就搞定了,看来联想兄的语文水平也很高!

过奖过奖,感觉还是没书上说得清楚。
其实你去看看/usr/include下的头文件,就会发现
有这样的声明形式。
#ifdef  __cplusplus
extern "C" {
#endif

//在此处定义函数

#ifdef  __cplusplus
}
#endif
所以标准库的函数不用我们自己做这样的声明的。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-01-08 16:14 |只看该作者

请教在头文件中加入extern "C" {} 是什么意思?

回答的很不错

鼓励一下

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2004-01-08 16:16 |只看该作者

请教在头文件中加入extern "C" {} 是什么意思?

原帖由 "蓝色键盘" 发表:
回答的很不错

鼓励一下

谢谢鼓励!   

论坛徽章:
0
8 [报告]
发表于 2004-01-08 21:35 |只看该作者

请教在头文件中加入extern "C" {} 是什么意思?

感情是书看的不够仔细,C++的书不会不说这件事

论坛徽章:
0
9 [报告]
发表于 2004-01-09 11:36 |只看该作者

请教在头文件中加入extern "C" {} 是什么意思?

[quote]原帖由 "五月"]感情是书看的不够仔细,C++的书不会不说这件事[/quote 发表:


你说的也没错,我身边也有C++的书,并且MSDN上也有这个资料。

我发表出来问并不只为我自己,也想让更多的人知道这个东西而已!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2004-01-09 11:43 |只看该作者

请教在头文件中加入extern "C" {} 是什么意思?

嘿嘿,有些书不会说这些事情的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP