C++宏定义函数

请问下为什么宏定义函数,传了三个参数,都带引号,但是输出的时候,第一个参数却不带引号呢?

#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"

阅读 1.7k
1 个回答

如果想将入参展开成字符串,可在使用入参时,加上 # 前缀。你少了个 #。

- logstr#field_name#field_value

+ #logstr#field_name#field_value
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题