如何初始化此结构中的表DetectionSensors
:
typedef struct
{
DetectionSensor *DetectionSensors[];
unsigned char nbSensors;
} SENSOR_STRUCT;
SENSOR_STRUCT my_var = { } ?
此表仅包含一些检测传感器指针;
最佳答案
不能;显示的结构定义不应编译。
typedef struct
{
DetectionSensor *DetectionSensors[]; // Not C
unsigned char nbSensors;
} SENSOR_STRUCT;
如果您正在尝试一个灵活的数组成员(FAM),那么它必须是结构中的最后一个字段,并且不能为包含FAM的结构编写初始化器。
否则,您需要对数组的维数使用显式的大小,或者丢失数组符号并使用
DetectionSensor *DetectionsSensors;
(或者可以想象,但这似乎是不可信的)DetectionSensor **DetectionSensors;
。typedef struct
{
DetectionSensor *DetectionSensors[10]; // Use an enum or #define
unsigned char nbSensors;
} SENSOR_STRUCT;
有了这个,你需要一些
DetectionSensor
s:DetectionSensor ds[10];
SENSOR_STRUCT my_var = { { &ds[0], &ds[1], &ds[2], &ds[3] }, 4 };
一般来说,保留宏的所有大写(
FILE
和DIR
尽管如此)。