1

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

#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 (Red Hat 4.6.1-9)
文件后缀:.C

4

1 回答 1

1

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

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

g++ -c -D_mdimode_ mycode.C
于 2012-06-28T10:57:41.073 回答