【发布时间】:2019-12-18 11:46:22
【问题描述】:
C18 标准在6.7.9/2 声明:
任何初始化程序都不应尝试为未提供的对象提供值 包含在正在初始化的实体中。
目前还不清楚这意味着什么。有一个相关的话题:Incosistent gcc diagnostic for string initialization。我引用的子句用于解释以下初始化产生的错误:
//error: excess elements in array initializer char a[5]
char a[5] = {'h','e','l','l','o','\0'};
initializer-list 的长度超过了正在初始化的数组的大小。
int main(void){
int a;
int b = (a = 3);
}
这里的初始化器是(a = 3),它是一个assignment-expression。并且初始化程序将一个值分配给另一个应该导致违反约束的对象。
为什么不打印任何诊断信息?
【问题讨论】:
标签: c initialization language-lawyer