マクロ定義(define)における'##と'###の使い方
マクロ定義は、一括変更が容易であるだけでなく、関数呼び出しのオーバーヘッドを低減します.マクロ定義(define)の「##」と「###」の意味:defineの「#」と「##」は文字列をつなぐのに一般的に使われていますが、実際の使用過程では、わずかな違いがあります.は文字列化の意味で、#defineの後に現れる'#'は後に続くパラメータを1つの文字列に変換することです;##'接続記号で、パラメータを接続します.eg1:
strcpy_(buff,abc)はstrcpy__に等しい(buff,“abc”)
eg2:
FUN(ABC)はmyABCに等しい
eg3:
出力:
番号を消してこのような結果を得て、直接a,bの値を印刷しました.これは文法規則に合っているので、#の役割は明らかです.
出力:
#define strcpy__(dst, src) strcpy(dst, #src) //#src “src”
strcpy_(buff,abc)はstrcpy__に等しい(buff,“abc”)
eg2:
#define FUN(arg) my##arg //FUN(arg) myarg
FUN(ABC)はmyABCに等しい
eg3:
#include
using namespace std;
#define OUTPUT(A) cout<
int main()
{
int a=1,b=2;
OUTPUT(a);
OUTPUT(b);
OUTPUT(a+b);
return 1;
}
出力:
a:1
b:2
a+b:3
番号を消してこのような結果を得て、直接a,bの値を印刷しました.これは文法規則に合っているので、#の役割は明らかです.
#define OUTPUT(A) cout<<A<<":"<A)<;
出力:
1:1
2:2
3:3