【问题标题】:Preprocessors directives have no effect预处理器指令无效
【发布时间】:2012-06-29 18:41:43
【问题描述】:

我遇到了预处理器指令的技术难题:

#ifdef, #define  

我有一个由 Makefile 构建的程序,我有 2 个选项来构建它:独立或嵌入式。
我做了类似的事情:

#ifdef _mdimode_
   //code for embedded
#else
   //code for standalone (default)
#endif

当我以嵌入式目的编译时,在我的主文件中,我写了一个:

#define _mdimode_

但是g++好像不认识也不理解。它总是在 else 中,从不编译嵌入式版本的代码。

信息:
GNU Make 3.82
g++ (GCC) 4.6.1 20110908(红帽 4.6.1-9)
文件后缀:.C

【问题讨论】:

    标签: makefile g++ c-preprocessor conditional-compilation preprocessor-directive


    【解决方案1】:

    这是一个猜测,没有更多信息。我假设代码与主文件位于不同的文件中。如果是这样,那么#define 不会传播到项目的该部分。您必须将其设置在包含代码的文件中,或者在其中包含 #included 的标头中。

    也可以选择在编译命令的选项中设置#define

    g++ -c -D_mdimode_ mycode.C
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多