計(jì)算機(jī)科學(xué)里的宏(Macro),是一種批量處理的稱謂。一般說來,宏是一種規(guī)則或模式,或稱語法替換,用于說明某一特定輸入(通常是字符串)如何根據(jù)預(yù)定義的規(guī)則轉(zhuǎn)換成對應(yīng)的輸出(通常也是字符串)。這種替換在預(yù)編譯時(shí)進(jìn)行,稱作宏展開。
#include <stdio.h>#define MAX 100/*上述兩個(gè)稱為預(yù)處理指令,因?yàn)樗鼈兪怯蓄A(yù)處理器解釋的。在預(yù)處理階段,define將替換原來定義的值,include將拷貝包含文件的內(nèi)容拷貝到源文件中*/1.簡單的宏定義
#define MAXSIZE 100#define int data2.宏函數(shù)
#define max(a, b) (((a) > (b)) ? (a) : (b))/**用于頻繁調(diào)用的函數(shù),在預(yù)處理時(shí)替換直接展開,避免了函數(shù)調(diào)用時(shí)內(nèi)存時(shí)間的開銷,宏宇類型無關(guān),所以上述宏可以用于整型·浮點(diǎn)型的比較,也可用C++中或C99的inline:inline int max(int a, int b);*/3.宏的單行定義/多行定義 ①
#define A(x) T_##X#define B(x) #@x#define C(x) #x//A(1) == T_1//B(1) == '1'//C(1) == "1"②
#include <stdio.h>#define FOR for(i = 0; i < 10; ++i) { / 4.條件編譯#include <stdio.h>#define LOCALint main(){ //如果在之前定義LOCAL,則從重定向輸入輸出流 //反之,忽略中間的語句,即使用標(biāo)準(zhǔn)輸入輸出流 #ifdef LOCAL freopen("in.txt", "r", stdin); freopen("out.txt", "r", stdout); #endif return 0;}//防止頭文件重復(fù)包含#ifndef _STDIO_H_#define _STDIO_H_#endif /* _STDIO_H_ */新聞熱點(diǎn)
疑難解答
圖片精選