预处理程序指令无效

时间:2012-06-28 09:07:20

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

我遇到预处理程序指令的技术问题:

#ifdef, #define  

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

#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

1 个答案:

答案 0 :(得分:1)

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

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

g++ -c -D_mdimode_ mycode.C