gpt4 book ai didi

c - 使用宏初始化特定数组元素

转载 作者:行者123 更新时间:2023-11-30 19:29:21 26 4
gpt4 key购买 nike

我有要在预处理期间加载的数据文件。

DATAFILE :
CAR(C1, C2, C3)

可以有 n 辆汽车(C1、C2....Cn),目前为 3 辆。C1,.. 是具有特定值的枚举字段,例如 C1=5、C2-8、c3-10。

我想将此数据填充到汽车数组 CAR_SUPPORTED[MAX_CARS] 中,以便

CAR_SUPPORTED[C1] = 1 and similarly for C2,C3.. so on.

我尝试了可变参数宏:

int CAR_SUPPORTED[] ={
#define CAR(...) __VA_ARGS__};
#include "car.data"

但这只能复制 5、8、10 到 0、1、2 索引。

我如何编写一个宏,使 CAR_SUPPORTED[C1] = 1 等等。有什么建议吗?

最佳答案

只需使用带有指示符的数组初始化:

#define CAR(C1, C2, C3) [C1] = 1, [C2] = 1, [C3] = 1 };

如果您将其用于参数的可变数量,我会使用 P99或增强预处理器宏,或者您可以自己编写宏扩展。使用 boost 获取示例:

#include <boost/preprocessor.hpp>

#define CAR_ONE(r, data, elem) [elem] = 1,
#define CAR(...) BOOST_PP_SEQ_FOR_EACH(CAR_ONE,,BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__)) };

CAR(A1, A2, A3)

关于c - 使用宏初始化特定数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52988368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com