C++ &引用\x01";[0]为什么字符串末尾出现[0]

C++ &引用\x01";[0]为什么字符串末尾出现[0],c++,arduino-ide,lcd,C++,Arduino Ide,Lcd,我在许多论坛上搜索过,但没有找到我问题的答案: 我试图理解我的3D打印机(MalLin固件)中的软件,我发现这个C++代码: #define LCD_STR_BEDTEMP "\x00" #define LCD_STR_DEGREE "\x01" #define LCD_STR_THERMOMETER "\x02" #define LCD_STR_UPLEVEL "\x03" #define LCD_STR_REFRESH "\x04" #define LCD_

我在许多论坛上搜索过,但没有找到我问题的答案:

我试图理解我的3D打印机(MalLin固件)中的软件,我发现这个C++代码:

#define LCD_STR_BEDTEMP     "\x00"
#define LCD_STR_DEGREE      "\x01"
#define LCD_STR_THERMOMETER "\x02"
#define LCD_STR_UPLEVEL     "\x03"
#define LCD_STR_REFRESH     "\x04"
#define LCD_STR_FOLDER      "\x05"
#define LCD_STR_FEEDRATE    "\x06"
#define LCD_STR_CLOCK       "\x07"
#define LCD_STR_ARROW_RIGHT "\x7E"  /* from the default character set */

lcd.createChar(LCD_STR_BEDTEMP[0], bedTemp);
lcd.createChar(LCD_STR_DEGREE[0], degree);
lcd.createChar(LCD_STR_THERMOMETER[0], thermometer);
lcd.createChar(LCD_STR_UPLEVEL[0], uplevel);
lcd.createChar(LCD_STR_REFRESH[0], refresh);
lcd.createChar(LCD_STR_FOLDER[0], folder);
lcd.createChar(LCD_STR_FEEDRATE[0], feedrate);
lcd.createChar(LCD_STR_CLOCK[0], clock);
lcd.createChar
是Arduino命令,我对这些命令没有任何问题,但我不明白的是为什么所有的
#define
字符串都以[0]结尾


谢谢您的帮助。

您的所有宏都会生成\0结尾的字符串文字。请显示
lcd.createChar
函数的签名。也许问题会更清楚。

所有宏都会生成始终以\0结尾的字符串文字。请显示
lcd.createChar
函数的签名。也许问题会更清楚。

[0]
是一种数组索引方法,意思是取第一个字符。看起来像是使用特殊字符的迂回方式。所有字符串都包含1个字符。
[0]
获取该字符串的第一个字符。为什么它是这样做的-没有更多的背景不可能说。对不起,但我不明白最后一部分。这个程序非常复杂,很多人编写不同的部分,所以在所有的程序中都有规范,以避免IDE编译过程中出现错误,谢谢,P.S.程序需要许多不必要的澄清,以确保有正确的答案compilation@AlgirdasPreidžius:可能是为了以后可以在编译器串联中使用普通字符串,例如,
“32”LCD_stru_DEGREE
[0]
是一种数组索引方法,意思取第一个字符。看起来像是使用特殊字符的迂回方式。所有字符串都包含1个字符。
[0]
获取该字符串的第一个字符。为什么它是这样做的-没有更多的背景不可能说。对不起,但我不明白最后一部分。这个程序非常复杂,很多人编写不同的部分,所以在所有的程序中都有规范,以避免IDE编译过程中出现错误,谢谢,P.S.程序需要许多不必要的澄清,以确保有正确的答案compilation@AlgirdasPreidžius:可能是为了以后在编译器串联中使用普通字符串,例如,
“32”LCD_stru_DEGREE
。我很确定它只是为HD44870U兼容的LCD控制器编程chargen RAM。由于chargen访问是面向字节的,因此只使用
char
是有意义的。签名是什么意思?我的意思是lcd.createChar将哪些数据类型作为参数?我想更好地理解你的问题。到目前为止,我的理解是,您在传递
lcd.createChar(lcd_STR_BEDTEMP[0],BEDTEMP)时遇到了不便而不是
lcd.createChar(lcd\u STR\u BEDTEMP,BEDTEMP)我很确定它只是为兼容HD44870U的LCD控制器编程chargen RAM。由于chargen访问是面向字节的,因此只使用
char
是有意义的。签名是什么意思?我的意思是lcd.createChar将哪些数据类型作为参数?我想更好地理解你的问题。到目前为止,我的理解是,您在传递
lcd.createChar(lcd_STR_BEDTEMP[0],BEDTEMP)时遇到了不便而不是
lcd.createChar(lcd\u STR\u BEDTEMP,BEDTEMP)