gpt4 book ai didi

函数中无法识别字符数组

转载 作者:太空宇宙 更新时间:2023-11-04 00:44:41 25 4
gpt4 key购买 nike

我正在为一个类(class)做一个项目。嵌入式 C 代码。我正在尝试创建一个由 5 个字符串组成的 char 数组,我在全局声明了这些字符串,这样我的 LCD 函数就可以轻松地遍历列表。它们可以声明为 const,但现在我只想让它毫无问题地构建。

问题是我在构建时不断收到函数中的“未声明”错误和指向声明的“冲突类型”错误。声明看起来是正确的,但我想它不是。我错过了什么?一旦声明被整理出来,未声明的错误可能会自行修复。

     // Declared before main()
char _cylinder_types[5];

_cylinder_types[0] = "Blk";
_cylinder_types[1] = "Wht";
_cylinder_types[2] = "Stl";
_cylinder_types[3] = "Alu";
_cylinder_types[4] = "Err";

在我的 lcd.c 文件中:

void lcd_display_update(void){

int i = 0;
while(i<5)
{
lcd_write(0);
lcd_position(lcd_TopLine,1);
lcd_string("SORTED:");
lcd_string(_cylinder_types[i]);
lcd_write(':');
lcd_write_Num_8(drop_number[i]);

lcd_position(lcd_BotLine,1);
lcd_string("UNSORTED:");
lcd_string(_cylinder_types[i]);
lcd_write(':');
lcd_write_Num_8(queued_number[i]);

mTimer(5000);
}
i++;
}

最佳答案

像声明数组一样

char * _cylinder_types[5];
^^^^^^

例如在这个表达式语句中

_cylinder_types[0] = "Blk";

字符串文字 "Blk" 被隐式转换为 char * 类型的右值。

而且你不能放置这些语句

_cylinder_types[0] = "Blk";
_cylinder_types[1] = "Wht";
_cylinder_types[2] = "Stl";
_cylinder_types[3] = "Alu";
_cylinder_types[4] = "Err";

在任何函数之外。

例如,您可以像这样初始化数组

 char * _cylinder_types[5] =
{
"Blk", "Wht", "Stl", "Alu", "Err"
};

如果项目中有多个编译单元,那么数组应该像这样在头文件中声明

extern char * _cylinder_types[5];

并且在某些模块中定义为例如

 char * _cylinder_types[5] =
{
"Blk", "Wht", "Stl", "Alu", "Err"
};

header 必须包含在每个引用数组的模块中。

考虑到这个声明

 i++;

应在 while 循环内。

关于函数中无法识别字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47561141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com