2019獨角獸企業重金招聘python工程師標準》
檔案包含:
#include<>:到系統指定的路徑尋找,一般是:/user/include;
#include 「」:優先從當前目錄開始,一般適用於自定義標頭檔案。
#define pi 3.1415
單純的替換
注意:不要加等號,不要末尾加分號。
#define max(x,y) (x)>(y)?(x):(y)
注意:
#define mul(x,y) x*y
//很容易出錯,mul(1+2,2+3),替換後1+2*2+3
#define mul(x,y) (x)*(y)
//還是會錯,30/mul(1+2,2+3),替換後30/3*5,但是其實是想30/(3*5)
#define mul(x,y) ((x)*(y))
//這樣才對
//#:將巨集中的引數轉換為字面值常量。限定:只能出現在帶引數的巨集的替換列表中。
#define print(n) printf(#n"=%d",n)
//##:將兩個識別符號粘合在一起形成乙個識別符號
#define mk_id(n)i_##n
mk_id(1) i_1
mk_id(23) i_23
<1>__line__:當前正當編譯的程式的行號 %d
<2>__file__:當前正當編譯的源程式的名字 %s
<3>__date__:編譯程式的日期 %s
<4>__time__:編譯程式的時間 %s
<5>__stdc__:判斷編譯器是否符合c標準,返回0或者返回1。一般:__stdc__?"符合":"不符合"
#if 、#elif 、#else、#endif
防止該標頭檔案被重複引用。
#if defined(db_sqlserver) // 如果定義了db_sqlserver
connectsqlserver(); // 連線sqlserver資料庫
#elif defined(db_access) // 如果定義了db_access
connectaccess(); // 連線access資料庫
#else // 如果沒有定義資料庫型別
printerror(); // 輸出錯誤資訊
#endif
//交換兩個引數值的巨集定義為:
#define swap(a,b)\
(a)=(a)+(b);\
(b)=(a)-(b);\
(a)=(a)-(b);
//輸入兩個引數,輸出較小的乙個:
#define min(a,b) ((a) < (b))? (a) : (b))
//表明1年中有多少秒(忽略閏年問題):
#define seconds_per_year (60 * 60 * 24 * 365)ul
//已知乙個陣列table,用乙個巨集定義,求出資料的元素個數
#define ntbl
#define ntbl (sizeof(table)/sizeof(table[0]))
預處理指令和巨集
1.預定義指令 file 進行編譯的原始檔 line 檔案當前的行號 date 檔案被編譯的日期 time 檔案被編譯的時間 stdc 如果編譯器遵循ansi c,其值為1,否則未定義。這樣可以輸出當前編譯檔案的相關資訊 2.巨集和函式的區別 1 巨集允許把引數替換到文字中。巨集引數和 define...
預處理 巨集定義
1,預處理 預處理是指在進行編譯的第一遍掃瞄 詞法掃瞄和語法分析 之前所作的工作。預處理是 語言的乙個重要功能,它由預處理程式負責完成。當對乙個原始檔進行編譯時,系統將自動引用預處理程式對源程式中的預處理部分作處理,處理完畢自動進入對源程式的編譯。語言提供了多種預處理功能,如巨集定義 檔案包含 條件...
C語言 預處理和巨集定義
今天分享一點c語言的預處理還有巨集相關的內容。目錄 預處理和巨集定義 一 乙個c程式的誕生 1 預編譯階段 c i 2 編譯階段 i s 3 彙編階段 s o 4 鏈結階段 該程式的所有.o exe 1 c語言中部分內建巨集 2 巨集的功能 1 使用巨集定義常量 2 使用巨集重新命名運算子 3 使用...