2011-11-23 34 views
2

我對C++/linux相當(非常)新,並且正在瀏覽glibc中的vfprintf函數。它包含REF(...)的許多用途,我假定它是一個宏,但我無法在任何地方找到它的定義。我搜索了文件本身以及所有包含的文件。'REF'在glibc vfprintf.c中的含義是什麼?

它是一個宏嗎?如果是這樣,它的定義在哪裏?還有更好的方法來找到宏的定義,而不是逐個搜索所有包含的文件?

+1

'gcc'可以用適當的參數輸出中間處理結果。當我想知道標識符在哪裏被聲明或者在哪裏以及如何定義每個宏時,我總是使用'g ++ -E -dD sourcefile.cpp'。這將給予所有宏定義的預處理結果。但是'#if'忽略的代碼不會出現。其他會影響預處理的參數應該像編譯命令一樣添加,如'-I',以產生正確的結果。 'man gcc'會提供更多信息。 – fefe

+0

@fefe,應該是一個答案,這是值得+1 :) – sarnold

回答

4

stdio-common/vfprintf.c

#ifdef SHARED 
# define REF(Name) &&do_##Name - &&do_form_unknown 
#else 
# define REF(Name) &&do_##Name 
#endif 

我發現它經由ctags(1); ctags -R . ; vim -t REF

+0

優秀!回答所有三個問題:-) –

+0

感謝堆,我正在尋找「#define REF」 –