如何初始化此结构中的表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;

有了这个,你需要一些DetectionSensors:
DetectionSensor ds[10];

SENSOR_STRUCT my_var = { { &ds[0], &ds[1], &ds[2], &ds[3] }, 4 };

一般来说,保留宏的所有大写(FILEDIR尽管如此)。

10-07 16:10