请问下为什么宏定义函数,传了三个参数,都带引号,但是输出的时候,第一个参数却不带引号呢?
#define LOG_COLLECTION(logstr, field_name, field_value) logstr#field_name#field_value
int main()
{
char buf[1024] = {'\0'};
const char* testaa = LOG_COLLECTION("aa", "name", "value");
printf("=====test=%s\n", testaa);
}
输出: =====test=aa"name""value"
如果想将入参展开成字符串,可在使用入参时,加上 # 前缀。你少了个 #。