【发布时间】:2021-01-18 14:22:45
【问题描述】:
目前我正在编写一些应该易于扩展的代码。 要添加新条目,用户必须添加:
- 新条目的名称
- 新条目的大小
名称仅用于填充枚举,需要大小以保留一些空间来存储它的值。
坦率地说,我什至不确定这是否可行,因为我实际上是在询问预处理器是否可以正确拆分/分离符号并将其转换为某种样板代码。
因此,例如,我想添加以下条目:
DECLARE_ENTRY(downlinkCounter, sizeof(uint32_t))
DECLARE_ENTRY(uplinkCounter, sizeof(uint32_t))
或许:
#define ENTRIES downlinkCounter, sizeof(uint32_t), uplinkCounter, sizeof(uint32_t)
或者:
#define NAME_ENTRIES downlinkCounter, uplinkCounter,
#define SIZE_ENTRIES sizeof(uint32_t), sizeof(uint32_t)
(最后一个选项不是首选,我更喜欢将名称和大小紧密配对)
我希望在头文件中将其扩展为以下内容:
typedef enum {
downlinkCounter,
uplinkCounter,
} eEntries_t;
并在源文件中扩展至此:
typedef struct {
uint8_t downlinkCounter[sizeof(uint32_t)];
uint8_t uplinkCounter[sizeof(uint32_t)];
} sEntries_t;
我什至可以用 C 预处理器做到这一点吗?还是我必须输入这个?
感谢您的帮助!
【问题讨论】:
标签: c c-preprocessor