2017-09-02 58 views
2

对于像的形成不良的C++程序:成功编译不合格程序是否符合标准?

foo^@#$bar%$ 

它是符合标准的编译器,以产生编译的二进制与诊断信息,而不是中断为g ++/++铛做编译?

intro.compliance是状态:

如果程序包含任何可诊断规则的违反或 出现本标准作为 文所述的构建的“有条件支持”时,实现不不支持构造的 ,一致性实现应至少发出一个 诊断消息。

在这种情况下不需要编译错误。

可能相关:

回答

5

是的,这是法律的执行,以产生一个二进制当输入是一种病态的程序。下面是[intro.compliance]/8在C++ 14:

一致性实现可以具有延伸部(包括附加的库函数),只要它们不 改变任何结构良好的程序的行为。根据本国际标准,需要实施方案来诊断程序 使用不合格的扩展。但是,这样做后,他们可以编译并执行这些程序。

在这种情况下,诊断通常会被称为“警告”(而不是“错误”)。