Daily-C-Studio(21):C言語#および##演算子

1261 ワード

Daily-C-Studio(21):C言語#および##演算子
堅持することになり,立ち止まることに負ける
#も前処理?はい、そう思います.どうやって使うの?焦らないで、まず次の例を見てください.
#define SQR(x) printf("The square of x is %d.", ((x)*(x)));
マクロを使用する場合は、次の手順に従います.
SQR(8);
次のように出力されます.
The square of x is 64.
いいえ、引用符の文字xは、置換可能な言語記号としてではなく、通常のテキストとして処理されます.
文字列にマクロパラメータを含める場合は、言語シンボルを文字列に変換する「#」を使用します.上記の例は、#define SQR(x)printf(「The square of」#x「is%d.」((x)*(x)))));
再使用:
SQR(8);
次のように出力されます.
The square of 8 is 64.
簡単ですよね?あなたは今、#号の使い方を知っていると信じています.
#の役割は、テキストの置換を実現することです.たとえば、
#define HI(x)
#define HI(x)
printf("Hi,"#x"
"); void main() { HI(John); }

プログラムの実行結果:Hi,John
プリコンパイル処理の場合、"#x"の役割は、xを代表する文字列に置き換えることである.本プログラムではxがJohnであるため,新しい列「Hi,John」を構築する.
##演算子と同様に、##演算子はマクロ関数の置換部分に使用できます.この演算子は2つの言語記号を単一の言語記号に組み合わせる.例を見てみましょう.
#define CONNECT(X,Y) X##Y
void main()
{
	int a1,a2,a3;
	CONNECT(a,1)=0;
	CONNECT(a,2)=12;
	a3=4;
	printf("a1=%d\ta2=%d\ta3=%d",a1,a2,a3);
}

次の結果が得られます.
a 1=0 a 2=12 a 3=4わかりましたか?##接着剤で、前後の2つの部分を接着します.
とりあえずここまで、O(∩∩)O~
私のコラムの住所:http://blog.csdn.net/column/details/c-daily-study.html
続きを待つ....