C語言中##稱為連接符,其功能是在帶參數的宏定義中將兩個子串(token)聯接起來,從而形成一個新的子串。
要注意下面的用法:
1、
[cpp]
#include <stdio.h>
#define debug(format, args...) fprintf(stderr, format, args)
void main(void){
debug("Test \n");
return;
}
有的說這種情況下字符串後面會多一個逗號,但是我用gcc編譯不通過;
2、
[cpp]
#include <stdio.h>
#define debug(format, args...) fprintf(stderr, format, ##args)
//#define debug(format, args...) fprintf(stderr, format, args)
void main(void){
debug("Test \n");
return;
}
這樣可以編譯通過,執行正確;
3、
[cpp]
#include <stdio.h>
//#define debug(format, args...) fprintf(stderr, format, ##args)
#define debug(format, args...) fprintf(stderr, format, args)
void main(void){
debug("Test%d \n",1);
return;
}
這樣也正確;