void displayString(int isDraw, float val, char* stringArray[], int x, int y) { (isDraw ? LCD_DisString_Not(x, y, stringArray[(int)val]) : LCD_DisString(x, y, stringArray[(int)val])); } const char gcszOnOff[][NEW_DEF_LEN] = {// 投入退出 { "退出" }, { "投入" } }; displayString(0, 1, (char **)gcszOnOff, (i % 9) + 1, 20); 这样调用执行直接卡死
时间: 2024-04-27 13:25:01 浏览: 60
这段代码存在类型转换错误,可能导致程序卡死。具体来说,char** 类型的 stringArray 指向了一个 const char[][NEW_DEF_LEN] 类型的数组 gcszOnOff,而参数传递时使用了类型转换 (char **),这是错误的做法。正确的做法是直接将 gcszOnOff 传递给函数,即 displayString(0, 1, gcszOnOff, (i % 9) + 1, 20)。
另外,需要确认变量 i 的定义和赋值是否正确,是否会导致数组越界的问题。如果 i 的值大于等于 9,那么 (i % 9) + 1 可能会导致数组越界,需要检查并修正。
最后,需要确认 LCD_DisString_Not 和 LCD_DisString 函数的参数是否正确,是否会导致程序卡死。建议你逐步排查问题,可以通过打印调试信息或者使用调试工具来定位问题。
相关问题
void displayString(int isDraw, float val, char* stringArray[], int x, int y) { (isDraw ? LCD_DisString_Not(x, y, stringArray[(int)val]) : LCD_DisString(x, y, stringArray[(int)val])); } const char gcszOnOff[][NEW_DEF_LEN] = {// 投入退出 { "退出" }, { "投入" } }; displayString(isDraw, val, (char **)gcszOnOff, (i % 9) + 1, 20); 这样调用为什么执行卡死
这段代码存在多个变量未定义或未赋值,无法判断具体原因。你需要检查这些变量的定义和赋值是否正确,例如 isDraw, val, stringArray 等。同时,也需要检查其他相关代码是否存在问题,例如函数调用的参数是否正确等。建议你先逐行检查代码,找到问题所在。如果问题仍无法解决,可以提供更多代码信息或者具体错误提示,以便更好地帮助你解决问题。
void displayString(int i, int isDraw, float val, char** stringArray, int x, int y) { (isDraw ? LCD_DisString_Not(x, y, (char *)stringArray[(int)val]) : LCD_DisString(x, y, (char *)stringArray[(int)val])); } const char gcszOnOff[][NEW_DEF_LEN] = {// 投入退出 { "退出" }, { "投入" } }; displayString(i, isDraw, val, gcszOnOff, (i % LISTOFFSET) + 1, 20); 这样调用正确吗
根据你提供的代码,这样的调用是正确的。在这段代码中,`displayString` 函数的第四个参数是 `char**` 类型的指针,而 `gcszOnOff` 是一个二维字符数组,因此可以将 `gcszOnOff` 的名称直接作为参数传递给 `displayString` 函数。同时,由于 `gcszOnOff` 是一个二维字符数组,所以在使用其中的元素时需要使用两个下标来指定元素的位置。在这段代码中,使用了 `(char *)stringArray[(int)val]` 来获取 `gcszOnOff` 中指定位置的字符串,并将其作为参数传递给 `LCD_DisString` 或 `LCD_DisString_Not` 函数进行显示。
需要注意的是,在这段代码中,`gcszOnOff` 数组中的字符串都只有一个元素,因此可以使用一维字符数组来代替二维字符数组,例如:
```
const char* gcszOnOff[] = { "退出", "投入" };
```
这样可以使代码更加简洁和易读。
阅读全文