为什么关于函数的宏都不能出现在函数体的外部?
__FUNCTION__
__FUNCSIG__
__FUNCDNAME__
想实现这样的函数
int test(char* pFun = __FUNCTION__);
编译出错error C2457: “__FUNCTION__”: 预定义的宏不能出现在函数体的外部
不知道该怎么弄。
[解决办法]
因为__FUNCTION__的本质是代码替换,而函数默认值是一个固定的值,所以不能这样写。
我自己是用折中方案,用另一个宏来完成这个效果,如:
#define TEST test(__FUNCTION__);
要调test的时候就调用宏TEST。