c - 如何在宏中使用##?
问题描述
这是一个简单的演示。但 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;
}
解决方案
##
用于连接两个宏参数,例如column##value
将client_port123
在上面的代码中交换。
你不需要在这里使用它,你可以写cfg->column = value
.
推荐阅读
- javascript - Firestore 函数或触发器之间的设计决策
- paperjs - 嵌套多边形清空外部多边形的填充
- javascript - 给定一个数字 N 和 2 个大小为 N 的排序顺序的数组 A 和 B,打印公共元素。如果找不到,则打印 -1
- reactjs - 拆分为组件时列表不呈现子级
- flutter - android.permission.INTERNET 没有显示
- java - Drawable RippleEffectColor Errorl
- c# - 带有选项卡的 WebView Xamarin Forms
- sql-server - 如何在 SSMS 中查看 UDF 的定义?
- node.js - puppeteer 页面评估在页面评估中使用 require 模块
- css - Bootstrap 4 - 无法获取我的