首页 > 解决方案 > 如何在宏中使用##?

问题描述

这是一个简单的演示。但 Xcode 向我显示错误“粘贴形成的 '->client_port',从宏 'PARSE_COLUMN' cfg->##column = value' 扩展的无效预处理令牌”

我只想快速为我的结构设置值,'cfg->##column = value'有什么问题

#include <stdio.h>

#define PARSE_COLUMN( column, value ) \
    printf("parse column:%s\n",#column);\
    cfg->##column = value

typedef struct {
    int client_port;
} server_config;

int main(void) {
    server_config *cfg = new server_config;
    PARSE_COLUMN(client_port,123);
    return 0;
}

标签: cmacros

解决方案


##用于连接两个宏参数,例如column##valueclient_port123在上面的代码中交换。

你不需要在这里使用它,你可以写cfg->column = value.


推荐阅读