問題15.4長度:http://c-faq.com/varargs/varargs1.htmlcomp.lang.c常見錯誤?計算variadically格式化字符串
在示例代碼中出現,他們似乎認爲在va_arg返回NULL如果列表的末尾已到達:
len = strlen(first);
va_start(argp, first);
while((p = va_arg(argp, char *)) != NULL)
len += strlen(p);
va_end(argp);
但va_arg的文檔明確表示,情況並非如此,並且va_arg會高興地越過列表的末尾。這與我嘗試模仿上述代碼並獲得段錯誤的經驗是一致的。
-1因爲沒有閱讀完整的文章 – pmg
我明白了,有道理。每當我學到C的新東西時,一旦我停止了抵抗,語言的美妙之處就會增加更多 – Xamuel
以後任何人都會在這個線程中發現一個評論:如果你想自動添加NULL(假設你正在使用CPP作爲你的編譯器),你可以用宏這樣做:'#define myformatter(first,...)myformatter_(first,## __VA_ARGS__,NULL)' – Xamuel