【问题标题】:macro passed from compile cannot be resolved in eclipse从编译传递的宏无法在eclipse中解析
【发布时间】:2016-09-22 04:17:50
【问题描述】:

我试图在编译时将定义的宏传递给我的程序,如下所示:

#include <stdio.h>
int main() {
    // KEY_CNT is not defined in program but passed at compile time
    printf("KEY_CNT: %d", KEY_CNT); 
    return 0;
}

并使用g++ -DKEY_CNT=2 -O2 test_3.cpp -o test_3 编译,它按预期工作,但问题是Eclipse 无法解析'KEY_CNT'。这只是一个玩具示例,在我的原始程序中,许多像这样带有红线的错误错误真的很烦人。

我认为 Eclipse 可能需要通知我的编译选项,以便它知道 'KEY_CNT' 已定义,所以我在 Properties -&gt; C/C++ Build -&gt; Settings -&gt; GCC C++ Compiler -&gt; Miscellaneous 中添加了 -DKEY_CNT=2,但它仍然不起作用。

有什么建议可以解决这个问题吗?

======== 已添加 ========

Eclipse 版本:面向 C/C++ 开发人员的 Eclipse IDE,Luna Service Release 2 (4.4.2)

【问题讨论】:

  • 只要能编译,你遇到的Eclipse无法知道宏是在编译选项中定义的问题到底是什么?
  • @AdrianColomitchi 我想我上面介绍的配置可能不是正确的方法或不足以让 Eclipse 知道定义?我不知道。有什么可能的线索吗?
  • "Luna Service Release 2 (4.4.2)" 除非受到其他因素的限制,否则我建议您升级到 Mars.2 (4.5.2) - Indexer 的麻烦更少(至少这是我的个人经验)
  • 我试了Mars,不知道是不是4.5.2,但是经常遇到突然停止工作导致电脑死机,但是当我换成Luna后,一切正常。也许我应该再试一次,看看最新版本是否有效。感谢您的信息。

标签: c++ eclipse compilation macros predefined-macro


【解决方案1】:

属性 -> C/C++ 构建 -> 设置 -> GCC C++ 编译器 -> 其他

错误的地方。

应该是“C/C++ Build -> Settings -> GCC C++ Compiler -> Preprocessor”

刚刚验证它有效。

【讨论】:

    猜你喜欢
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 2013-02-12
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    相关资源
    最近更新 更多