以下代码是什么意思?

以下代码的含义是什么:
//Keyboard map
#define LEFT_ARROW      'P'
#define RIGHT_ARROW     'Q'
#define UP_ARROW        'K'
#define DOWN_ARROW      'L'
#define CANCEL          'F'
#define HOME            'A'
#define BLANK           'B'
#define SIGN_TOGGLE     'G'
#define KB_DECIMAL      'R'
#define KB_ZERO         'S'
#define KB_ONE          'C'
#define KB_TWO          'D'
#define KB_THREE        'E'
#define KB_FOUR         'H'
#define KB_FIVE         'I'
#define KB_SIX          'J'
#define KB_SEVEN        'M'
#define KB_EIGHT        'N'
#define KB_NINE         'O'
#define ENTER           'T'
任何人都可以解释它是如何工作的以及为什么以这种方式定义它们?     
已邀请:
这些只是常数。这意味着在编译源代码之前,预处理器将通过源代码并将
#define
后面的单词的任何实例替换为右边的字符。所以如果代码中有这样的行:
char myChar = LEFT_ARROW;
预处理器会将该代码更改为:
char myChar = 'P';
在编译之前。     
#define TOKEN REPLACEMENT
是一个预处理器指令,它在语法上将所有出现的
TOKEN
替换为
REPLACEMENT
。 你的代码片段的目的是为键盘绑定指定名称,这意味着,如果你说
if (key == KB_NINE)
,编译器将看到
if (key == 'O')
。 正确使用预处理器的优点不仅在于可读性:它还增加了可维护性,以防常量发生变化。 关键定义似乎是无意义的:例如,
KB_ONE
'C'
,但是,通过在一个地方修改常量,可以在几次击键中解决这个问题。 另见:http://en.wikipedia.org/wiki/C_preprocessor#Macro_definition_and_expansion     
这些是您在键盘右侧找到的键。在C运行时中没有标准方法让程序识别这些击键。因此,已经有各种非标准扩展来解决这个问题。 一种方案是让getch()在按下这样的扩展键时返回0,然后下一个getch()调用返回该扩展键的键代码。该密钥代码可以是原始键盘扫描代码。一切皆有可能,你必须要知道原来的键盘供应商和CRT供应商有一个线索。显然,它是古老的专有键盘接口,是新一代计算时代的优秀供应商锁定策略。     

要回复问题请先登录注册