#define
定義宏#if #else #elif #endif
條件編譯#ifdef #ifndef
判斷是否定義了某個宏#error
錯誤#program
設定狀態(tài)或指定完成(編譯器)#undef
取消宏定義__LINE__
行號__FILE__
源文件名__DATE__
創(chuàng)建日期__TIME__
創(chuàng)建時間__FUNCTION__
當前正在被訪問的函數(shù)名(大項目查錯誤)—–>__func__
#define
宏定義4.帶參宏 1.介紹
- 定義形式:
#define
宏名(一般為大寫) stuff(替換內(nèi)容)- 使用宏定義相當于替換
- 注意:不能加分號
- 定義表達式時有歧義:
#define
ar 2*5+1則3*ar==31
所以可以這樣定義
#define ar (2*5+1)
來避免歧義
#define 宏名(形參表) stuff
//例: #define _sqrt(number) number*number
4^2---->_sqrt(4)
//通過帶參宏定義申請內(nèi)存的快捷方式----->函數(shù)不能傳類型
#define calloc(size,type) calloc(size,sizeof(type))
2.帶參宏和函數(shù)區(qū)別3.帶參宏實現(xiàn)foreach循環(huán)
在帶參宏定義中,不會為形式參數(shù)分配內(nèi)存(替換),因此不必指明數(shù)據(jù)類型
當調(diào)用頻繁時帶參宏的優(yōu)勢就明顯了,因為函數(shù)調(diào)用有開銷且要指定數(shù)據(jù)類型
#define foreach(_variable,_array) \
for(int _i=0,_cnt=0;_i
5.宏定義中的特殊符號
1.##
連接#define Teval(name) name##_tel
Teval(zk)----->zk_tel
2.#
把參數(shù)轉為字符串#define to_string(val) #val
to_string(123456);----->不能把變量轉為字符串,局限性大
3.#@
把參數(shù)轉為字符#define to_char(val) #@val
to_cahr(abcd)---->最多保存4個----->輸出d,小端存儲
6.條件編譯(整型)#if #elif #else #endif(必須有)
#error
#ifdef 如果定義了則
#ifndef 沒有定義則
7.#inlcude
頭文件包含系統(tǒng)庫頭文件使用尖括號包含
自定義頭文件使用雙引號包含
防止頭文件重復包含
#ifndef
#endif
#program
計算機式操作系統(tǒng)特定的—>windows#program one
—->防止頭文件重復包含
指定該文件在編譯源碼時僅由編譯器包含(打開)一次
#program message("")
不中斷編譯的情況下,發(fā)送一個字符串文字量到標準輸出
#program warning(...)
修改編譯器的警告狀態(tài)
default //將警告行為重置為默認值
disable //不發(fā)出指定的警告信息
erroe //將指定的信息視為錯誤
once //指定的警告只顯示一次
suppress //抑制下一行的指定警告生成(只對下一行生效)
//警告狀態(tài)
//1.保存 push,n(1<=n<=4)
//2.恢復 pop
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧