2011-08-09 16 views
2

注:我用G ++版本4.3.4在g ++中有哪些其他隱藏變量(使用宏預定義)?

所以我學習斷言語句和跨使用該變量__LINE____FILE__它(巧妙地)給出的行號,並從文件名稱的自制斷言宏來了他們被稱爲 - 在這種情況下,斷言失敗的地方。這些都是史詩般的信息!

我能夠推斷出變量__FUNCTION__會給你你在裏面的功能名稱...太棒了!然而,當assert.h在工作時,你也會得到該函數的參數(即function: int main(int, char**),目前我所能做的就是獲取函數名...

一般來說,我可以在哪裏瞭解更多關於這些精彩隱變量,讓所有的人的完整列表?

PS我想我現在明白爲什麼你不應該使用的變量名以__

+0

你應該更新你的標題,以更好地反映你的問題。 MACRO in g ++ – YeenFei

回答

0

至於函數參數,你可以嘗試使用__PRETTY_FUNCTION__而不是__FUNCTION__。更多信息,請訪問:http://gcc.gnu.org/onlinedocs/gcc/Function-Names.html

至於預先定義宏的列表,你可以找到很多的,如果你在這裏四處搜尋:http://gcc.gnu.org/onlinedocs/cpp/Predefined-Macros.html#Predefined-Macros

我不能肯定地說,在列表中引用以上是完整的。我這樣說的原因是,在預定義的宏列表下找不到__PRETTY_FUNCTION__ ...爲什麼這是我不能說的。

1

一般來說,你可以找到任何你想了解通過閱讀它的標準文檔和/或單獨的實現文檔來獲得一種語言。對於C++來說,這將是ISO/IEC 14882:2003,2003 C++ stan DARD。我沒有副本,但我確實有C99標準(ISO/IEC 9899:1990),其中還列出了(在第6.10.8節中)魔術宏__DATE____TIME__,它們擴展爲包含日期&時間的字符串封閉的源文件的編譯。 (而不是__FUNCTION__,C99有__func__(第6.4.2.2);是以前的標準C++還是編譯擴展?)

編輯:我可以找到的GCC/G ++的這些特殊名稱的唯一列表是GCC手冊的this section,其描述了__func__,__FUNCTION____PRETTY_FUNCTION__

+0

我查看了最新的工作文件(N3242),他們只列出了其中的六個是manditory。另外,還有五個具體實現。根本找不到'__FUNCTION__',更不用說如何獲取函數參數類型。我正在尋找g ++ 4.3.4的完整列表。 – Jimmy

+0

所以你正在尋找'__PRETTY_FUNCTION__'?嗯...這似乎不正確... – Jimmy

相關問題