1.在代码编译时可以在GCC 编译使用-D参数指定宏编译需要编译的代码段。
譬如a.c代码中有如下预定义:
#ifdefine OS_LINUX
…代码段1
#else
…代码段2
#endif
当使用:gcc a.c -DOS_LINUX 编译时选择执行代码段1
当使用:gcc a.c 编译时 选择执行代码段2
如下是实例:`
//suppot.c
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char*argv)
{
#ifdef TEST_SUPPOT
printf(" define TEST_SUPPOT\n"); //代码段1
#else
printf("no define TEST_SUPPOT\n");//代码段2
#endif
return 0;
}
如下是分别用-D 指定和不指宏的编译执行效果:
zdg@ubuntu:/mnt/hgfs/SHARE/Project/TEST$ gcc suppot.c -DTEST_SUPPOT
zdg@ubuntu:/mnt/hgfs/SHARE/Project/TEST$
zdg@ubuntu:/mnt/hgfs/SHARE/Project/TEST$
zdg@ubuntu:/mnt/hgfs/SHARE/Project/TEST$
zdg@ubuntu:/mnt/hgfs/SHARE/Project/TEST$ ./a.out
define TEST_SUPPOT
zdg@ubuntu:/mnt/hgfs/SHARE/Project/TEST$
zdg@ubuntu:/mnt/hgfs/SHARE/Project/TEST$
zdg@ubuntu:/mnt/hgfs/SHARE/Project/TEST$ gcc suppot.c
zdg@ubuntu:/mnt/hgfs/SHARE/Project/TEST$
zdg@ubuntu:/mnt/hgfs/SHARE/Project/TEST$
zdg@ubuntu:/mnt/hgfs/SHARE/Project/TEST$ ./a.out
no define TEST_SUPPOT
zdg@ubuntu:/mnt/hgfs/SHARE/Project/TEST$
zdg@ubuntu:/mnt/hgfs/SHARE/Project/TEST$
可以看出-D指定编译宏时执行代码段1,未用-D指定时执行代码段2
版权声明:本文为zdg_c原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。