为什么主函数外面要套extern "c"?

Granada 2008-11-25 08:41:48
经常看到这样的代码,形如:
#ifdef __cplusplus
extern "C" {
#endif

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
{
......
}

#ifdef __cplusplus
}
#endif

对于普通函数,外面套一个extern "C" ,可以在cpp中编译成为能在c中被调用的函数。
但是主函数WinMain外面也套一个extern "C",是什么意思?难道还有其他函数会在c中调用主函数WinMain?
...全文
245 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
candyice 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lsd1025 的回复:]
按C语法规则编译链接。
[/Quote]
C++中存在函数重载,用了extern的话按C语法规则编译
lsd1025 2008-11-26
  • 打赏
  • 举报
回复
按C语法规则编译链接。
yshuise 2008-11-26
  • 打赏
  • 举报
回复
extren "c"是指按照c语言的链接方式,要知道c语言和c++的链接方式不同。
比如重载函数,在c语言就要出错,不信你试先。
sun007700 2008-11-26
  • 打赏
  • 举报
回复
C和C++函数的相互引用----C++中extern “C”含义深层探索[转载]
http://hi.baidu.com/hu_tu/blog/item/c32ac1dc0464d9a5cd1166e4.html
冻结 2008-11-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Granada 的回复:]
WINMAIN是自己写的函数,不是SDK中定义的。
[/Quote]

难道你不是在MFC中用WINMAIN吗?
MFC中的WINMAIN是MFC已经定义好的。
也就是说在C++中,才extern "C"。
如果用C语言就没必要了。
Granada 2008-11-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 toadzw 的回复:]
指明使用C的语法而不是C++语法;
[/Quote]

这么做的目的是什么?
Granada 2008-11-25
  • 打赏
  • 举报
回复
WINMAIN是自己写的函数,不是SDK中定义的。
toadzw 2008-11-25
  • 打赏
  • 举报
回复
指明使用C的语法而不是C++语法;
霍大脚 2008-11-25
  • 打赏
  • 举报
回复
你这个api编程,你c++熟了不
冻结 2008-11-25
  • 打赏
  • 举报
回复
extern "C"应该是说明你写的函数按照C语言的编译方式编译!
其实就是你要调用一个C语言下的函数!
那个WINMAIN函数是在SDK中定义的。
是C语言下的函数!

自己的理解,有不对的地方还请楼下的指点!

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧