![](/img/trans.png)
[英]Best C++ compiler and options for windows build, regarding application speed?
[英]Build C application by C++ compiler
我有一个用C编写的应用程序。我需要在C ++中添加一个新功能。 我用GCC构建C应用程序。 要添加新功能:
使用G ++构建现有应用程序。
添加新功能。
当我尝试执行(1.)时,遇到以下问题:在文件dev_table.c中定义的数组:
const type_name devices[] = {...};
在文件stm.c中,我通过以下方式导出此数组:
extern const type_name devices[];
当我分配
stm->dev = devices;
链接器失败。
如果我通过GCC构建相同的代码,则一切正常,并且运行良好,但是对于G ++,它将失败。
如果我从两个地方( dev_table.c
和stm.c
)都删除const
,它也运行良好,因此问题得以解决, 但是我不明白这是什么原因。
我建议你看看这篇文章
嗯,由于const是隐式静态的,因此即使在a_global_var定义(在file.c中)上,也需要一个extern。 没有这个,包含file.h的任何东西都不会链接,因为它正在寻找具有外部链接的const int a_global_var。
要么
您可以将它们一起使用(
extern
和const
)。 但是您需要在使用const时保持一致,因为C ++进行名称修饰时,const包含在用于修饰符号名称的类型信息中。 因此,除非您使用extern“ C” {},否则extern const int i将引用与extern int i不同的变量。 C名称修饰不注意const。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.