如何在宏中使用##?

张浩杰*_*张浩杰 0 c macros

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

我只是想快速设置我的struct的值,以及'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;
}
Run Code Online (Sandbox Code Playgroud)

kri*_*isz 6

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

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