gpt4 book ai didi

组合不同模块中的枚举

转载 作者:太空狗 更新时间:2023-10-29 16:08:45 28 4
gpt4 key购买 nike

我得到了许多包含枚举的模块。 (它们保存状态机中使用的信号)。

moduleAsignals.h:

enum ModuleASignals {
modASig1,
modASig2,
...
modASigN,
};

moduleBsignals.h:

enum ModuleBSignals {
modBSig1,
modBSig2,
...
modBSigM,
};

每个模块都有任意数量的信号。

现在我想在一个应用程序中组合随机选择的模块。问题是,所有信号都必须全局可见,并且信号必须保持唯一。一个信号(8 位)的大小也有限制,所以我不能只为单个模块的枚举提供唯一的偏移量。

如何将单个枚举组合成一个枚举,而不必为每个应用程序调整信号头文件?一种方法是将元素(不带“enum ... {”)放入文件中并包含这些片段,但这会导致 IDE 无法理解代码,因此会带来一些不便。

最佳答案

如果可以接受一个.h包含另一个,你可以写

enum ModuleBSignals {
modBSig1 = modASigN+1,
modBSig2,
...
modBSigM,
};

因此,第二个枚举将在第一个枚举之后开始。

已添加:

你可以尝试用一个虚拟的第一个元素参数化你所有的模块:

#include "sig_start.h"  // Default one contains #define START 0

enum ModuleBSignals {
modBSig1 = START,
...

并且构建过程有责任为每个模块目录创建正确的 sig_start.h。第 N+1 个 sig_start.h 将包含

#include module1signals.h
...
#include moduleNsignals.h
#define START modNSigM+1

关于组合不同模块中的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10111712/

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