下鄉glibc中複雜的宏的兔子洞,我已經達到/usr/lib/gcc/x86_64-linux-gnu/4.8.2/include/stdarg.h
的實施方案,其中,例如,va_start
宏定義爲:__builtin_va_start(V,L)
#define va_start(v,l) __builtin_va_start(v,l)
但我我一直試圖尋找沒有成功的__builtin_va_start(v,l)
的實際實施。我用google搜索了一下,對於Visual Studio,我得到的最遠距離是Microsoft’s implementation,我認爲這並沒有根本的不同。
有誰知道glibc的實現是在哪裏?
TIA。
您將不得不檢查gcc編譯器本身的源代碼,因爲(除非我錯了)它是在內部僞函數實現的級別。該源代碼可以在網上免費獲得。 –
如果您想快速查看擴展的內容,只需在gcc中使用-E進行編譯即可。 –
您尋求什麼信息,那不包含在va_start的手冊頁中?根據我的經驗,'va_list'聲明瞭一個指針,'va_start'將這個指針設置爲指向堆棧上的某個隨機位置。如果您需要知道系統的確切實現方法,那麼一種方法是使用調試器來逐步執行彙編代碼。 – user3386109