//預處理檔案可以通過 gcc -e test.c -o test.i得到**預編譯後的test.i檔案
//可執行檔案可以通過命令 gcc test.c可以得到可執行的**
//#define正確的使用方式
#include "stdio.h"
#define _sum_(a,b) (a) + (b)
#define _min_(a,b) ((a) < (b) ? (a) : (b))
#define _dim_(a) sizeof(a)/sizeof(*a)
int main()
//#define錯誤的使用方式
#include "stdio.h"
#define _sum_(a,b) (a) + (b)
#define _min_(a,b) ((a) < (b) ? (a) : (b))
#define _dim_(a) sizeof(a)/sizeof(*a)
int main()
//用函式實現取陣列大小:
#include "stdio.h"
int read_array_size(int *p_array)//當陣列作為函式的引數的時候會退化為指標//所以導致求不到陣列的大小
int main()
//函式和巨集的對比總結 巨集表示式沒有出入棧的開銷
// 巨集表示式中不能出現遞迴定義
//出現遞迴呼叫的錯誤
#include "stdio.h"
#define _sum_(a) ((a > 0) ? (_sum_(n-1) : 0)
int main()
//巨集可以出現在程式的任何位置
//在定義之後的**都可以使用這個巨集
//這個就不舉例了
//通過巨集定義靈活的使用malloc 和 free
//堆的建立和釋放
#define _malloc_(type,size) (type*)malloc(sizeof(type)*size);//申請size大小type型別的堆空間
#define _free_(p) (free(p),p = null) //有時我們釋放堆空間的時候會忘記寫p=null,p會變成懸掛指標(野指標)。
//最後體驗一把強大的內建巨集
__file__ -> 被編譯的檔案
__line__ -> 當前行號
__date__ -> 編譯時的日期
__time__ -> 編譯時的時間
__stdc__ -> 編譯器是否遵循c規範
#include"stdio.h"
int main()
xcode 預編譯巨集定義
方法 利用預編譯 巨集定義 方案1 在pch 中定義乙個巨集 version free 來代表 免費版 方案2 targets檔案中定義乙個巨集 中 乙個版本對應乙個targets 檔案 這個檔案裡邊定義著我們應用的圖示 名字 引數 發布的時候 乙個專案按照乙個targets 檔案來發布的 ok 在...
預編譯處理 條件編譯分析
條件編譯的行為類似於c語言中的if else 條件編譯時預編譯指示命令,用於控制是否編譯某段 示例 條件編譯初探 include define c 1 int main 輸出結果 this is first printf 很明顯,當我們巨集定義常量為1時才會編譯s this is first pri...
預編譯指令,也稱作巨集定義
預編譯又稱為預處理,是做些 文字的替換工作。處理 開頭的指令,比如拷貝 include包含的檔案 define巨集定義的替換,條件編譯等 就是為編譯做的預備工作的階段 主要處理 開始的預編譯指令 先看乙個例項 import 巨集定義,也叫預編譯指令 define pi 3.14 define mul...