在宏定义中如何添加__FUNCTION__?
代码如下:
#include <cstdio>
void _LOG(const char* strFormat, ...) {
printf("res=%s\n", strFormat);
}
#define LOG(strFormat, ...) _LOG(__FUNCTION__ ":" strFormat, ##__VA_ARGS__) //在这里添加__FUNCTION__后编译会报错,添加其它字符串就不会报错。
int main() {
LOG("%s", "Hello, world!");
return 0;
}
尝试将__FUNCTION__改为字符串就不会报错。
__FUNCTION__
__FUNCTION__
是一个变量,不是一个宏。现在标准里用的名字是__func__
。因为它是一个变量,所以它不能进行字符串拼接。
你可以用
%s
输出它: