关于这个C预处理器语句的含义,我有点迷失了,

Ken*_*ows 2 c undef c-preprocessor

所以,首先,这里是代码,实际名称切换为通用名称以限制混淆.

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

这是我一直在查看的一些源代码的片段,并考虑将forking作为一种熟悉C编程语言的复杂性的方法.所以,对于我未经训练的眼睛,这似乎什么都不做.在我的大脑中,定义一些东西,然后立即取消它,似乎会相互抵消.

显然,我意识到我错了.但为什么我错了?

Cam*_*ner 5

"commandsFile.def"文件可能在内部某处使用"A_CO​​MMANDS_MACRO"宏.

请记住,"#include"基本上将包含的文件粘贴到包含的文件中,因此在处理"commandsFile.def"时#define仍然有效.