因此,首先,这是代码,实际名称切换为通用名称以限制混乱。

/* Get the list of Hotkey commands */
#define A_COMMANDS_MACRO(a, b, c, d) a = b ,
enum {
#include "commandsFile.def"
} ;
#undef  A_COMMANDS_MACRO

这是我一直在寻找的某些源代码的片段 C 编程语言。因此,在我未经训练的眼中,这似乎什么都不做。在我的大脑上,定义某些东西,然后立即不确定它似乎会互相抵消。

显然,我意识到我错了。但是为什么我错了呢?

有帮助吗?

解决方案

您所看到的通常称为X-MaCro。该技术包括通过 #define, ,然后包括一个使用它们的文件 #include.

作为一个非常简单的例子,您可以拥有一个标题(说 medheader.h)以:

int foo(MYTYPE a, MYTYPE_PTR b);
void bar(MYTYPE a, MYTYPE_PTR b);

然后,在您的代码中:

#define MYTYPE int
#define MYTYPE_PTR int*
#include "myheader.h"
#undef MYTYPE
#undef MYTYPE_PTR

#undef有时也在随附的文件中。

有关更多信息,请看一下 在此Wikipedia链接.

其他提示

“ commandsfile.def”文件可能在内部某处使用“ a_commands_macro”宏。

请记住,“ #include”基本上将随附的文件粘贴到包括一个文件中,因此当处理“ CommandsFile.def”时,#Define仍然有效。

commandsFile.def 应该包含许多行:

A_COMMANDS_MACRO(A_COMMAND, 10, na, na)
A_COMMANDS_MACRO(OTHER_COMMAND, 23, na, na)

因此,该代码将创建具有可用命令及其代码的枚举。

当用其他语言编写的程序使用此.DEF文件时,它可能会很有用,因此它不使用文本解析,而是使用C预处理器来执行此操作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top