ant*_*009 19 c macros visual-studio
使用gcc 4.4.2和WinXP Visual Studio C++ 2008进行编译
#if defined ( WIN32 )
#define __FUNCTION__ __func__
#endif
因为我想使用宏来显示函数名称.我已经做了以上所以我可以跨平台,并在linux或windows上编译时使用相同的函数.
但是,当我在WinXP上编译时,我收到以下错误:
__func__ undeclared identifier
我不能#define像这样的宏吗?
非常感谢任何建议,
tom*_*gic 25
看起来你有你的#define落后.如果你想__func__在两个平台上使用,而WIN32有,__FUNCTION__但__func__你需要这样做:
#if defined ( WIN32 )
#define __func__ __FUNCTION__
#endif
可能有更好的方法来了解您是否需要定义__func__,但这种快速入侵应该可以解决问题.
请记住,在支持__FUNCTION__和__func__关键字的编译器上,它们不是宏,因此您无法执行以下操作(因为#ifndef __func__无效):
#ifndef __func__
#define __func__ __FUNCTION__
#endif
从C99规范:
6.4.2.2预定义标识符
1标识符
__func__应由翻译者隐式声明,就像紧接每个函数定义的开头括号一样,声明Run Code Online (Sandbox Code Playgroud)static const char __func__[] = "function-name";出现了,其中function-name是词法封闭函数的名称.
的__FUNCTION__在MSVC编译器宏预先定义.你需要让它看起来像这样:
#ifndef _MSC_VER
#define __FUNCTION__ __func__
#endif
或者相反,如果您愿意:
#ifdef _MSC_VER
#define __func__ __FUNCTION__
#endif
| 归档时间: | 
 | 
| 查看次数: | 24237 次 | 
| 最近记录: |