刚学了一招,可以使用编译器的-D选项来定义程序中使用的宏。
#include <stdio.h>
int main(int argc, char **argv)
{
#ifdef MY_MAC
printf("Hello -D.\n");
#else
printf("MY_MAC was not defined.\n");
#endif
return 0;
}
上面的代码中使用了MY_MAC宏,
【】$g++ -DMY_MAC -o dtest dtest.c
执行结果:
【】$ ./dtest
Hello -D.
【】$
无掉-D选项,重新编译,执行结果:
【】$ g++ ./dtest.c -o dtest
【】$ ./dtest
MY_MAC was not defined.
我们可以利用编译器这个选项来调试我们的程序奥。
如果我的宏代表一个常量怎么办呢??
看看修改后的代码:
#include <stdio.h>
int main(int argc, char **argv)
{
#ifdef MY_MAC
printf("Hello -D. %d\n", MY_MAC);
#else
printf("MY_MAC was not defined.\n");
#endif
return 0;
}
我输出了宏代表的值。
在终端执行一下命令:
【】$ g++ -DMY_MAC=5 ./dtest.c -o dtest
【】$ ./dtest
Hello -D. 5
【】$
如果程序中有多个宏可以这样编译
【】$g++ -DMAC1=5 -DMAC2=6 soucefile.c
^_^,,很兴奋是吧??这样我们就不用在代码里修改宏变量了。。