可變參數宏

#define debug(format, ...) fprintf(stderr, format, ##__VA_ARGS__)debug

... 指可變參數。這類宏在被調用時,它(這裏指‘…')被表示成零個或多個符號,包括裏面的逗號,一直到到右括弧結束爲止。當被調用時,在宏體(macro body)中,那些符號序列集合將代替裏面的__VA_ARGS__標識符。當零個參數時,##會把前面多餘的逗號去掉。code

eg:orm

int main()
{
    debug("a = %d", 10);    //擴展爲fprintf(stderr, "a = %d", 10);
    debug("good");          //擴展爲fprintf(stderr, "good");
    return 0;
}

__FILE__ 表明當前文件名form

__LINE__ 當前行class

相關文章
相關標籤/搜索