繁体   English   中英

通过C ++编译器构建C应用程序

[英]Build C application by C++ compiler

我有一个用C编写的应用程序。我需要在C ++中添加一个新功能。 我用GCC构建C应用程序。 要添加新功能:

  1. 使用G ++构建现有应用程序。

  2. 添加新功能。

当我尝试执行(1.)时,遇到以下问题:在文件dev_table.c中定义的数组:

const type_name devices[] = {...};

在文件stm.c中,我通过以下方式导出此数组:

extern const type_name devices[];

当我分配

stm->dev = devices;

链接器失败。

如果我通过GCC构建相同的代码,则一切正常,并且运行良好,但是对于G ++,它将失败。

如果我从两个地方( dev_table.cstm.c )都删除const ,它也运行良好,因此问题得以解决, 但是我不明白这是什么原因。

我建议你看看这篇文章

嗯,由于const是隐式静态的,因此即使在a_global_var定义(在file.c中)上,也需要一个extern。 没有这个,包含file.h的任何东西都不会链接,因为它正在寻找具有外部链接的const int a_global_var。

要么

您可以将它们一起使用( externconst )。 但是您需要在使用const时保持一致,因为C ++进行名称修饰时,const包含在用于修饰符号名称的类型信息中。 因此,除非您使用extern“ C” {},否则extern const int i将引用与extern int i不同的变量。 C名称修饰不注意const。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM