首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将C++声明为外部"C“是合法的吗?

将C++声明为外部"C“是合法的吗?
EN

Stack Overflow用户
提问于 2013-11-06 11:24:42
回答 2查看 3.7K关注 0票数 18

作为一名低级程序员,我经常使用可执行文件的模块启动代码,因此我非常了解"crt0“这样的代码是如何工作的。在编写C++代码时,我通常会将main声明为extern "C",以便与C启动代码调用main的方式相匹配。因此,我通常对main使用此声明(如果专门针对Windows,则使用wmain ):

代码语言:javascript
复制
extern "C" int main(int argv, const char *const *argv)

extern "C" int __cdecl wmain(int argv, const wchar_t *const *argv)

main上使用extern "C"合法吗?另外,相对于char *[],对于argv的类型,const char *const *是否合法

EN

回答 2

Stack Overflow用户

发布于 2013-11-06 11:27:24

extern "C"只明确地告诉C++编译器不要在生成的函数标签上进行修饰或使用名称纠缠。

是的,两者都是合法的。

票数 4
EN

Stack Overflow用户

发布于 2013-11-06 12:26:17

该标准支持两种形式的main

代码语言:javascript
复制
int main()
int main(int argc, char* argv[])

这些形式是任何实现都必须识别的。其他的一切都是你的实现,简单地使用你的代码,让你更有创造力。这不是非法的,因为标准明确允许它识别其他形式的main

启动代码通常以允许它调用没有链接声明的main的方式编写,因为标准规定main应该是这样的。编译器通常将main特殊地视为具有C链接,这是标准所允许的,所以启动代码就是这样声明它的。正常的程序员对此并不感兴趣。他只需要遵循标准。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19803522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档