gpt4 book ai didi

c++ - C 文件中是否需要 extern "C"? (解决奇怪的 Eclipse 行为)

转载 作者:太空狗 更新时间:2023-10-29 20:40:31 25 4
gpt4 key购买 nike

我对使用 gcc 和 g++ 工具的混合 C/C++ 应用程序还比较陌生。为了掌握它,我下载了 iperf 源代码并使用 Eclipse 成功构建了它。

有一个奇怪的地方:如果我使用 Eclipse 查看文件“Thread.c”,它会认为存在语法错误并在几乎整个文件下划线,就好像代码有缺陷,但事实并非如此。

这是触发它的代码片段:

#ifdef __cplusplus
extern "C"
{
#endif

我知道 extern "C"在 C++ 中的用途,但 Eclipse 在 .c 文件中出现问题。不过,它很乐意在 .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++ 常规 -> 路径和符号 -> # Symbols 选项卡,然后选择“GNU C”(或任何你喜欢的 C 编译器)使用)在“语言”列下。滚动右侧的符号/值列表,找到“__cplusplus”符号并将其删除。请确保您为 C 编译器执行此操作。

单击确定关闭项目属性窗口,语法错误警告将在 Eclipse 编辑器中消失。

关于c++ - C 文件中是否需要 extern "C"? (解决奇怪的 Eclipse 行为),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23737599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com