Linux 编程编译之宏选择代码编译 -D

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版权协议,转载请附上原文出处链接和本声明。