合同一般条件4.5.1 c89
使用以下标志编译:-Wall, -Wextra
我尝试用默认值初始化以下结构。但是,我收到以下警告:
static struct Device {
char *name;
char *config;
} *app = { NULL, NULL };
警告:
warning: initialization from incompatible pointer type
warning: excess elements in scalar initializer
但是,如果我通过声明一个非指针来执行以下操作,则不会出现任何问题,例如。
static struct Device {
char *name;
char *config;
} app = { NULL, NULL };
为什么?
非常感谢你的建议,
最佳答案
不能那样初始化指针。不过,你可以这样做:
static struct Device {
char *name;
char *config;
} *app = NULL;
初始化指向
NULL
的指针。指针只不过是一个内存地址。不能将{ NULL, NULL }
分配到内存地址。