我遇到预处理程序指令的技术问题:
#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
答案 0 :(得分:1)
如果没有更多信息,这是一个猜测。我假设代码与主文件位于不同的文件中。如果是这样,则#define
不会传播到项目的该部分。您必须在包含代码的文件中或在其中#include
d的标头中设置它。
您还可以选择在编译命令的选项中设置#define
:
g++ -c -D_mdimode_ mycode.C