可變參數函數如何處理數值常量?例如考慮下面的代碼:可變參數函數和常量
myfunc(5, 0, 1, 2, 3, 4);
功能看起來是這樣的:現在
void myfunc(int count, ...)
{
}
,爲了遍歷一個論點va_arg
,我需要知道它們的大小,例如int
,short
,char
,float
等等。但是,我應該假定數字常量的大小,就像我在上面的代碼中使用的那樣?
試驗表明,剛剛假設int
他們似乎這樣編譯器似乎把它們壓int
即使這些常量也可以在一個單一的char
或short
每個代表工作的罰款。
不過,我正在尋找我看到的行爲的解釋。 C中用於將數字常量傳遞給可變參數函數的標準類型是什麼?這是明確定義還是依賴於編譯器? 32位和64位架構有什麼不同?
謝謝!
感謝您的答案!我在這裏推薦了一個後續:http:// stackoverflow。COM /問題/ 40330749 /爲什麼 - 不 - 我 - 可變參數函數工作與 - 既-INT-和長隆 – Andreas