2011-11-23 28 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” –