2014-09-10 92 views
-1

請你能幫我理解printf原型中的__format是什麼嗎?什麼是printf定義中的__format究竟意味着什麼?

extern int printf(const char * __ restrict __format,...);

如何在文檔中找到這些集合?

謝謝!

+0

'__format'用作參數變量名稱。 – 2014-09-10 11:30:39

+0

查看手冊頁:http://linux.die.net/man/3/printf – style 2014-09-10 11:31:31

回答

0

具體根據ISO/IEC 9899:1999聲明,

int printf(const char * restrict format, ...);

使用__是可變命名法。

+0

實際上,它是[保留名稱](https://stackoverflow.com/questions/228783/what-are-the-規則約-使用-AN-下劃線在-AC-標識符)。 – edmz 2014-09-10 12:08:17

+0

注意:C11dr 7.1.3 1保留標識符「...以下劃線開頭的所有標識符以及大寫字母或其他下劃線始終保留用於任何用途......」 – chux 2014-09-10 15:31:46

+0

如果'stdio.h'有' int printf(const char * restrict format,...);'和包含'.c'文件已經將'format'定義爲一個類似於對象的宏,這個頭文件將會中斷。通過使用'__format',他們可以避免這個問題,就像你在C中一樣,因爲應用程序不允許定義以兩個下劃線開頭的名字。對於編譯器處於C89模式時的'restrict'也是如此(這依賴於一個常見的擴展,其中C99中添加的關鍵字可以帶和不帶兩個前導下劃線,並且在C89模式下可用下劃線)。 – zwol 2017-05-18 21:19:25

相關問題