hhhh,關於巨集定義,現在就給大家普及一部分
最基本的定義常量
#define pi 3.1415926
這種方式相信大家一定都知道吧
但如果是關於可變引數的呢
!!!第一種
1 #include23#define ojbk(s) #s //
#表示將s轉化為字元,也可以放字串,s也可以用其他字元或字串 45
intmain()
6
現在大家一定會因為這個printf根本沒打引號而感到奇怪吧。
現在我就給你們解釋一下。
先說引號吧,根據我自己的理解,引號就是將一串字母數字符號轉換為字元的工具
所以加引號就是為了轉換為字元,而我們的『#』卻可以完成這項操作。所以沒有引號我們也可以正常的執行
而ojbk()後面的就是普通操作
!!!第二種
#include#define ojbk(...) printf(# __va_args__) //其中的...表示可變引數,而__va_gars__在處理中被實際引數所替換,這都是不能改變的。然後具體作用就自己敲乙個來看效果吧。
intmain()
接下來我們來說說第三種『##』
#include#define ojbk(x,y) x ## y //##的作用就是將兩個連線起來,不過目前來說好像只發現可以連線數字
intmain()
然後還有最後一種
#include#define ojbk(format,...) printf(#format,## __va_args__) //format是可以修改的,表示你想要轉換成字元的一串而逗號為分隔,#不對逗號以後的起作用,所以逗號後面的不是字元
intmain()
剩下的就是巨集定義替換的騷操作了
比如說#define hhh scanf //這就表示hhh是scanf的同義詞,能用scanf 的地方一般hhh也可以
還有很多關於巨集定義的騷操作,我就不細說了,剩下的就靠你們自己去探索吧!
abs int 巨集定義 巨集定義和巨集方法
巨集定義和巨集方法 定義機型 define is iphone5 uiscreen instancesrespondtoselector selector currentmode cgsizeequaltosize cgsizemake 640,1136 uiscreen mainscreen cu...
巨集定義及帶引數的巨集定義
include 巨集定義,通常用於定義常量,在 轉換成二進位制檔案時會將 中的巨集名稱替換成值 define 巨集名稱 值 define a 1 帶引數的巨集 fun a,b 為巨集的名稱 a b為巨集的值 帶引數的巨集比函式效率高 define fun a,b a b 為了保證替換結果,最好加入 ...
巨集定義的巨集展開錯誤
巨集定義自身的缺陷是指巨集展開錯誤,主要是由於運算子優先順序等原因,使得巨集展開後的語義與餘項發生偏差。define max a,b a b?a b define mul a,b a b int main int x 4.y 3 int max max x,y 2 int product mul x...