プリコンパイル時マクロ置換の意見

 

そして、主に、プリコンパイルの過程で#マクロ置換を扱います

例えば

する#include <stdio.hの>
 に#define   PI 3.14 INT メイン(){ ダブル   R = 3 、S。
S = R * R *ののPI; 
printf(" %Fを\ n " 、S);
リターン0 ; 
}  



 

場合、次のようにプリコンパイルされたコードが変更されます

する#include <stdio.hの> int型のmain(){ ダブル   R = 3 、S。
S = Rの*のR * 3.14 
printf(" %Fを\ n " 、S);
リターン0 ; 
}  




 

#define PI 3.14は何のオープンスペースは、すべてのPI 3.14にソースのタイプのみを交換する必要はありませんされていません

する#include <stdio.hの>
 に#define INT INT *
 INT のmain(){ 

int型のP。
リターン 0 ; 
}

代替リターンINTメイン(INT *)は関数ポインタ変数を入力し、上記のすべてのコンパイル済みコードは、ポインタ型Pであります

マクロを参照して定義されている場合

する#include <stdio.hの>
 に#define SUM(X、Y)(X * Y)
 INT のmain(){
 int型 A = 3、Bは= 4。 INT C SUM(A + = 5、Bの+ 。6 );
 // プリコンパイルCは、= SUM場合は、INT(A * + Bの+ 5 6)置換 
のprintf(" %d個の\ N- " 、C);
 戻り 0 ; 
}

出力c = 29

する#include <stdio.hの>
 に#define MAX(x、y)は(?(X)>(Y)(X):( Y))
 INT のmain(){ 

int型 = 10、B = 5 
MAX( ++ 、B)。
printf(" %dの" 、A):
 戻り 0 ;

出力A = 12;

 

おすすめ

転載: www.cnblogs.com/lc-bk/p/11069799.html