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。