01 預編譯處理 巨集定義與使用分析

2021-09-28 23:17:44 字數 1342 閱讀 2652

//預處理檔案可以通過		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...