C++宏定义函数

bayes
  • 34

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

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

回复
阅读 414
1 个回答
✓ 已被采纳

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

- logstr#field_name#field_value

+ #logstr#field_name#field_value
宣传栏