【发布时间】:2017-08-04 08:05:54
【问题描述】:
有没有办法在声明时初始化 C 结构中的指针:
struct person
{
uint8_t age;
uint16_t * datablock;
} mike = { 2, malloc(4) };
我已经尝试了上面的代码,但我得到了:
初始化元素对于数据块成员来说不是常量。
我正在使用 GCC。
【问题讨论】:
-
您正在调用函数
malloc(),但初始化器必须是编译时常量。 -
文件范围初始化器必须由常量组成。
-
代码是否需要稍后更改
mike.datablock以指向分配的内存?