繁体   English   中英

成功地编译格式错误的程序是否符合标准?

[英]Is it standard-compliant to compile ill-formed program in success?

对于格式错误的C ++程序,例如:

foo^@#$bar%$

编译器生成带有诊断消息的已编译二进制文件,而不是像g ++ / clang ++那样中断编译,是否符合标准?

intro.compliance指出:

如果程序在实施不支持该构造时违反了任何可诊断的规则或发生了本标准中描述为“有条件支持”的构造,则合格的实施应发出至少一条诊断消息。

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

可能相关:

是的,当输入是格式错误的程序时,实现生成二进制文件是合法的。 这是C ++ 14中的[intro.compliance] / 8:

符合条件的实现可以具有扩展(包括附加的库函数),前提是它们不会改变任何格式正确的程序的行为。 需要实施以诊断使用根据本国际标准格式错误的扩展程序的程序。 但是,这样做后,他们可以编译和执行此类程序。

在这种情况下,诊断通常称为“警告”(与“错误”相对)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM