C是否具有函数参数名称的__func__function?

“C”标准是否支持类似于__func__的函数参数名称?

如果你想要一个快速和肮脏的解决方案,使这样的预处理器宏……

 #define FUNCTION_HEADER(a) a { const char* __func__ = #a; #define FUNCTION_FOOTER() } 

…并将它用于这样的函数页眉和页脚(使用VS 2008测试):

 #include  #define FUNCTION_HEADER(a) a { const char* __func__ = #a; #define FUNCTION_FOOTER() } FUNCTION_HEADER( int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) ) MessageBoxA(0, __func__, __func__, MB_OK); return 0; FUNCTION_FOOTER() 

这应该按照你想要的方式工作,但它很难看。

不,C99标准具有以下内容:

6.10.8预定义的宏名称

以下宏名称应由实现定义:

 __DATE__ __FILE__ __LINE__ __STDC__ __STDC_HOSTED__ __STDC_MB_MIGHT_NEQ_WC__ __STDC_VERSION__ __TIME__ 

以下宏名称由实现有条件地定义:

 __STDC_IEC_559__ __STDC_IEC_559_COMPLEX__ __STDC_ISO_10646__ 

6.4.2.2预定义标识符

标识符__func__应由翻译器隐式声明,就像紧跟在每个函数定义的__func__大括号后面的声明一样

  static const char __func__[] = "function-name"; 

出现了,其中function-name是词法封闭函数的名称.63)

正如我想其他编译器所做的那样,gcc增加了一些扩展 。