【问题标题】:Eclipse CDT indexer cannot resolve ae_f32 typeEclipse CDT 索引器无法解析 ae_f32 类型
【发布时间】:2017-01-17 08:18:35
【问题描述】:

在尝试将浮点 C 代码移植到定点代码时,我在 Eclipse CDT 中遇到了一个问题 - 索引器无法识别我用来替换标准 C floatf32 类型。代码编译和构建良好(使用 MinGW GCC 编译器)。它是 C 和 C++ 代码的混合体。

在 Eclipse 中看到数百条警告很烦人:Type f32 could not be resolved。这是在第 3 方 DSP 库代码中定义类型的方式:

#define B_(X) b_##X
... 
#define f32 B_(f32) 
... 
/* type declarations */

#define DECLARE_TYPE(s) \
    namespace s##_space { \
    class s##_; \
    } \
    typedef s##_space::s##_ s;
... 
DECLARE_TYPE(f32);
...
namespace f32_space 
{
    //etc...

为什么不能识别f32 类型?

【问题讨论】:

  • 这对我有用(或者至少是您在此处输入的近似版本)。你能编辑成minimal reproducible example吗? (具体来说,ae_f32 有效,但 ae_f32x2 无效,但后者在您的问题中没有声明。)
  • 对不起,不能做强制示例...“为我工作”是什么意思? Eclipse 不报告Type ae_f32 could not be resolved? ae_f32x2 不重要,只有 ae_f32 重要。
  • 是的,如果我删减你的示例并将其粘贴到一个新的 C++ 项目中,它就可以工作ae_f32。这是我在缩减时使用的:pastebin.com/KfmpEsbX
  • 谢谢乔纳。好吧,这只会让它更令人费解。
  • 也许问题是包含文件的大小? .h 文件有 30.000 多行。

标签: c++ eclipse signal-processing eclipse-cdt


【解决方案1】:

解决了。

问题是.c 文件中混合了 C 和 C++。我有带有 .c 扩展名的源代码,其中包含 ifdefed C++ 代码 (#if defined(__cplusplus) 等),并且编译器也设置为 C++。然而,Indexer 将这些文件解析为 C。当我生成索引器日志文件(Project\C C++ Index\Create Parser Log File)时,我注意到以下内容:Language: GNU C

然后我添加了语言映射:

Settings\C C++ General\Language Mappings

  • C Header file 映射到 C++
  • C Source file 映射到 C++

一旦我改变了它,它就可以工作了。

【讨论】:

    猜你喜欢
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 2015-11-07
    • 2012-02-16
    • 1970-01-01
    相关资源
    最近更新 更多