c语言中define的一个不常见的用法

新手上路,请多包涵

一个开源的x86模拟器中的键盘宏

我看不懂对应的代码,我只知道最终的宏_KEY_button这种形式的枚举,比如_KEY_ESCAPE对应的值是1,但是对于这个宏是怎么得出来的不懂,具体来说,第一行中#define _KEYS(_)括号中的_代表什么意思,枚举类型中的第二行的_KEYS(_KEY_NAME)为什么不带参数

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

define _KEYS(_) \

_(ESCAPE) _(F1) _(F2) _(F3) _(F4) _(F5) _(F6) _(F7) _(F8) _(F9) _(F10) _(F11) _(F12) \
_(GRAVE) _(1) _(2) _(3) _(4) _(5) _(6) _(7) _(8) _(9) _(0) _(MINUS) _(EQUALS) _(BACKSPACE) \
_(TAB) _(Q) _(W) _(E) _(R) _(T) _(Y) _(U) _(I) _(O) _(P) _(LEFTBRACKET) _(RIGHTBRACKET) _(BACKSLASH) \
_(CAPSLOCK) _(A) _(S) _(D) _(F) _(G) _(H) _(J) _(K) _(L) _(SEMICOLON) _(APOSTROPHE) _(RETURN) \
_(LSHIFT) _(Z) _(X) _(C) _(V) _(B) _(N) _(M) _(COMMA) _(PERIOD) _(SLASH) _(RSHIFT) \
_(LCTRL) _(APPLICATION) _(LALT) _(SPACE) _(RALT) _(RCTRL) \
_(UP) _(DOWN) _(LEFT) _(RIGHT) _(INSERT) _(DELETE) _(HOME) _(END) _(PAGEUP) _(PAGEDOWN)

define _KEY_NAME(k) _KEY_##k,

enum {

_KEY_NONE = 0,
_KEYS(_KEY_NAME)

};

阅读 1.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进