有没有一种方法可以在声明时初始化C结构中的指针:
struct person
{
uint8_t age;
uint16_t * datablock;
} mike = { 2, malloc(4) };
我已经尝试了上面的代码,但是得到了:
对于数据块成员,初始化器元素不是恒定的。
我正在使用GCC。
您可以通过编译时常量在其声明时初始化结构的成员,如以下代码所示:
struct person
{
uint8_t age;
uint16_t * datablock;
} mike = { 2, NULL };
malloc(4)
但是,它是一个函数调用,它将在运行时执行。因此,您收到的错误消息确实非常准确。
但是,您可以执行以下操作:
#define NUM 2 // change NUM at will
static uint16_t data[NUM]; // memory that will be allocated
struct person
{
uint8_t age;
uint16_t * datablock;
} mike = { 2, data };
请注意,在这种情况下,的地址data
在编译时是已知的,因此您可以将其用作结构成员的初始化程序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句