專題三:編譯預處理。包括以下章節:
3-1.c
#include
//如果沒有定義巨集常量c,可以通過命令:gcc -dc=1 -e 3-1.c -o 3-1.i 來定義巨集常量c,方便除錯。
#define c 1
int main()
else
return
0;}
3-1.i
# 1 "3-1.c"
# 1 ""
# 1 "《命令列》"
# 1 "3-1.c"
/*......此處省略n行......*/
# 940 "/usr/include/stdio.h" 3 4
# 2 "3-1.c" 2
int main()
else
return
0;}
3-2.c
#include "3-2.h"
#include "global.h"
int main()
3-2.h
#include "global.h"
global.c
int global = 2;
3-2.i
# 1 "3-2.c"
# 1 ""
# 1 "《命令列》"
# 1 "3-2.c"
# 1 "3-2.h" 1
# 1 "global.h" 1
int global = 2; //重定義了global
# 2 "3-2.h" 2
# 2 "3-2.c" 2
# 1 "global.h" 1
int global = 2;
# 3 "3-2.c" 2
int main()
結果:
# 1 "《命令列》"
# 1 "3-2.c"
# 1 "3-2.h" 1
# 1 "global.h" 1
int global = 2;
# 5 "3-2.h" 2
# 2 "3-2.c" 2
int main()
結果編譯正確:
結果:
22 條件編譯使用分析
條件編譯的意義 乙份 支援多種產品版本切換 條件編譯的本質 條件編譯時預編譯指示命令用於控制是否編譯某段 define c 1 if c 1 printf this is first printf n else printf this is second printf n endif 預編譯器根據條...
條件編譯使用
include define c 1 int main 例子1 通過命令列定義巨集 include define c 1 int main 編譯命令 gcc dc 1 test.c 問題 間接包含同乙個標頭檔案是否會產生編譯錯誤?條件編譯可以解決標頭檔案重複包含的編譯錯誤 例子2 產品線區分及除錯 ...
預編譯處理 條件編譯分析
條件編譯的行為類似於c語言中的if else 條件編譯時預編譯指示命令,用於控制是否編譯某段 示例 條件編譯初探 include define c 1 int main 輸出結果 this is first printf 很明顯,當我們巨集定義常量為1時才會編譯s this is first pri...