我有这样的结构:警告与结构初始化
struct ChangeIntItem
{
char *unit;
const char **parser;
int *changevalue;
uint16_t *change_eeprom_value;
int maximum;
int minimum;
};
我想和初始化其他变量这个结构体变量:
struct ChangeIntItem ChangeIntItemTypeBoolean = { .unit = "", .minimum = 0, .maximum = 1, .parser = {"off", "on"}};
它工作正常,但我得到一些警告:
Severity Code Description Project File Line
Warning braces around scalar initializer Handsteuerung C:\Users\... 11
Severity Code Description Project File Line
Warning (near initialization for 'ChangeIntItemTypeBoolean.parser') Handsteuerung C:\Users\... 11
Severity Code Description Project File Line
Warning initialization from incompatible pointer type Handsteuerung C:\Users\... 11
Severity Code Description Project File Line
Warning (near initialization for 'ChangeIntItemTypeBoolean.parser') Handsteuerung C:\Users\... 11
Severity Code Description Project File Line
Warning excess elements in scalar initializer Handsteuerung C:\Users\... 11
Severity Code Description Project File Line
Warning (near initialization for 'ChangeIntItemTypeBoolean.parser') Handsteuerung C:\Users\... 11
在另一种情况下,我写了一个函数,它将结构的变量设置为默认值,但我更喜欢th是方法,因为它更短。
所有的过错,在那里所造成“.parser = {‘开’‘关’,}”,但我没有得到我的错......
另外'parser'可能是类型为const char * parser []'的灵活数组成员。很少有指针指针变量声明有意义的情况。 – Lundin
@Lundin是的,用VLA'parser'应该是struct的最后一个成员,不是吗? – LPs
谢谢!有时它比你想象的要容易;) – GURKE