そして、主に、プリコンパイルの過程で#マクロ置換を扱います
例えば
する#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;