我将结构定义如下:
typedef PACKED struct
{
UINT8 pedo_config[5]; // 0: male 1: Non 2:weight 3:stepLen 4:height
INT8 local_name[LOCAL_NAME_LEN_MAX];
} HOSTINFO;
HOSTINFO hello_sensor_hostinfo;
但警告
警告:赋值在没有强制转换的情况下从指针生成整数[默认启用]
发生在hello_sensor_hostinfo.local_name[0]="AAA";
我还尝试将INT8 local_name[LOCAL_NAME_LEN_MAX];
更改为char local_name[LOCAL_NAME_LEN_MAX];
。
但警告仍然存在。
我错过了什么吗?发生警告的原因是什么?
答案 0 :(得分:3)
您未在C
中分配字符串。
您需要使用strcpy()
将字符串lieral复制到数组中。
此外,如果您选中,hello_sensor_hostinfo.local_name[0]
的数据类型为INT8
,而"AAA"
代表char*
(字符串文字的基地0} EM>)。因此不匹配。
FWIW,在您的情况下,INT8 local_name[LOCAL_NAME_LEN_MAX];
是一个编译时数组。通过使用赋值运算符=
,您基本上尝试更改数组的基址,这是不允许的。您可以将local_name
定义为指针,然后您可以为其分配字符串文字。像
typedef PACKED struct
{
UINT8 pedo_config[5]; // 0: male 1: Non 2:weight 3:stepLen 4:height
INT8 * local_name;
} HOSTINFO;
HOSTINFO hello_sensor_hostinfo;
hello_sensor_hostinfo.local_name="AAA";