Keyboard 以下代码的含义是什么?

Keyboard 以下代码的含义是什么?,keyboard,c-preprocessor,Keyboard,C Preprocessor,以下代码的含义是什么: //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'

以下代码的含义是什么:

//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后面单词的任何实例。如果代码中有这样一行:

char myChar = LEFT_ARROW;
预处理器将该代码更改为:

char myChar = 'P';
编译前。

定义令牌替换是一种,它将所有出现的令牌替换为替换,语法上

代码段的目的是为键盘绑定分配名称,这意味着,如果您说if key==KB_-NINE,编译器将看到key==O

正确使用预处理器的优点不仅在于可读性:它还可以提高可维护性,以防常量发生变化

键的定义似乎毫无意义:例如,KB_ONE是“C”,但是,通过在一个位置修改常量,只需几次击键就可以解决这个问题

另请参见:

定义令牌替换是一种,它在语法上将所有出现的令牌替换为替换

代码段的目的是为键盘绑定分配名称,这意味着,如果您说if key==KB_-NINE,编译器将看到key==O

正确使用预处理器的优点不仅在于可读性:它还可以提高可维护性,以防常量发生变化

键的定义似乎毫无意义:例如,KB_ONE是“C”,但是,通过在一个位置修改常量,只需几次击键就可以解决这个问题


另请参见:

这些是键盘右侧的按键类型。在C运行时中没有标准的方法让程序识别这些击键。所以有各种各样的非标准扩展来解决这个问题


一种方案是让getch在按下扩展键时返回0,然后下一个getch调用返回该扩展键的键代码。该键代码可能是原始键盘扫描代码。任何事情都是可能的,你必须知道最初的键盘供应商和阴极射线管供应商有一个线索。很明显,在新石器时代的计算机时代,专有键盘接口是一种优秀的供应商锁定策略。

这些是键盘右侧的按键。在C运行时中没有标准的方法让程序识别这些击键。所以有各种各样的非标准扩展来解决这个问题


一种方案是让getch在按下扩展键时返回0,然后下一个getch调用返回该扩展键的键代码。该键代码可能是原始键盘扫描代码。任何事情都是可能的,你必须知道最初的键盘供应商和阴极射线管供应商有一个线索。显然,这是一种古老的、专有的键盘接口,早在新石器时代的计算机时代,它就是一种优秀的供应商锁定策略。

如果你能解释一下这是从哪里来的,那会有所帮助。看起来好像有人在恶作剧。@Robert:事实上,这可能是合法的。如果这是一个键码列表,它们的值对字符输出没有影响。它给大写拉丁字母起了有趣的名字。嗯,什么是名为SIGN\u TOGGLE的键?我在哪里能找到一个?如果你能解释一下这是从哪里来的话会有帮助的。看起来好像有人在恶作剧。@罗伯特:事实上,这可能是合法的。如果这是一个键码列表,它们的值对字符输出没有影响。它给大写拉丁字母起了有趣的名字。嗯,什么是名为SIGN\u TOGGLE的键?我在哪里能找到一个?那些是有效的代码。我知道预处理器是如何工作的。我的问题是为什么它们会这样表示?有人知道吗?这是无法回答的,除非你记录下你使用的特定键盘和CRT。这些都是有效的代码。我知道预处理器是如何工作的。我的问题是为什么它们会这样表示?有人知道吗?这是无法回答的,除非你记录下你使用的特定键盘和CRT。