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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章