【发布时间】:2020-03-31 11:08:39
【问题描述】:
不要使用 C++,所以这可能是一个愚蠢的问题。 根据文档,我正在检查一个头文件 .h,其中应该定义了参数 ID。我遇到了参数所在的行,它们如下:
#define SPCDLL_ERROR_KEYWORDS \
{ \
keyword (NONE), \
keyword (OPEN_FILE), \
keyword (FILE_NVALID), \
keyword (MEM_ALLOC), \
};
#define PARAMETERS_KEYWORDS \
{ \
keyword (LIMIT_LOW), \
keyword (LIMIT_HIGH), \
keyword (LEVEL), \
keyword (HOLDOFF), \
};
#ifdef keyword
#undef keyword /* prevents redefinition warning */
#endif
#define keyword(key) key
但是我已经搜索并不能确切地找到关键字(key)行在做什么?它是否根据列表中的顺序分配每个参数和 ID?那会使LIMIT_LOW,ID = 1吗?为什么没有明确定义。另外,由于有两个关键字定义列表,它是如何工作的?
我来自 Python 领域,我会将它们定义为两个字典,其中包含 Error_names 和 Parameter_vals 的 ID 和值。
如果有人能解释一下,我将不胜感激。
【问题讨论】:
-
这是用户自定义类型
-
这看起来像X macro。例如,它可以用于从相同的数据创建一个枚举和相应的字符串数组。 (如果是这样,以后应该有另一个 undef 和
keyword的重新定义。)