合同一般条件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 }分配到内存地址。

10-04 15:10
查看更多