我对使用 gcc 和 g++ 工具的混合 C/C++ 应用程序相对较新。
为了掌握它,我下载了 iperf 源代码并使用 Eclipse 成功构建了它。
有一个奇怪的地方:如果我使用 Eclipse 查看文件“Thread.c”,它认为存在语法错误,并在几乎整个文件下划线,就好像代码有缺陷一样,但事实并非如此。
这是触发它的代码片段:
#ifdef __cplusplus
extern "C"
{
#endif
我知道 extern "C" 在 C++ 中的用途,但是当它出现在 .c 文件中时,Eclipse 会出现问题。不过它很乐意在 .cpp 和 .h 文件中接受它。
我已经检查了 Make 实用程序如何构建 iperf 应用程序,我发现它总是使用 gcc 来编译 c 文件,使用 g++ 来编译 cpp 文件,这让我想知道是否确实需要 extern "C"。它绝对不会造成伤害,因为 gcc 编译器很乐意处理它,但如果不是严格要求,我可以忽略它并在 Eclipse 中获得更好的可读性。
我还研究了 Eclipse 行为的可能解决方案,但还没有真正找到一个,如果有人能指出如何解决它,那将同样好。
如果您使用 Eclipse,您在编辑器中看到的内容与 Eclipse 内部索引器/解析器有关。您的混合 C/C++ 项目可能会毫无问题地编译和构建,但是当您打开一个包含以下内容的源文件时:
#ifdef __cplusplus
extern "C" {
#endif
您可能会在 extern“C” 行上看到标记的语法错误。这意味着在项目设置中为 C 编译器定义了“__cplusplus”符号。
为了消除 Eclipse 编辑器中的语法错误,请转到项目属性 -> C/C++ 常规 -> 路径和符号 -> # 符号选项卡,然后选择“GNU C”(或您使用的任何 C 编译器) “语言”栏目。滚动右侧的符号/值列表,找到“__cplusplus”符号并将其删除。确保你这样做only对于 C 编译器。
单击 OK 关闭项目属性窗口,语法错误警告将在 Eclipse 编辑器中消失。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)