读书人

为何关于函数的宏都不能出现在函数体的

发布时间: 2013-03-06 16:20:31 作者: rapoo

为什么关于函数的宏都不能出现在函数体的外部?
__FUNCTION__
__FUNCSIG__
__FUNCDNAME__

想实现这样的函数
int test(char* pFun = __FUNCTION__);
编译出错error C2457: “__FUNCTION__”: 预定义的宏不能出现在函数体的外部

不知道该怎么弄。

[解决办法]
因为__FUNCTION__的本质是代码替换,而函数默认值是一个固定的值,所以不能这样写。
我自己是用折中方案,用另一个宏来完成这个效果,如:

#define TEST test(__FUNCTION__);

要调test的时候就调用宏TEST。

读书人网 >C++

热点推荐