Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 编译器警告和错误是如何定义的,它们是否曾经包含在标准中_C++_C_Compiler Construction_Standards - Fatal编程技术网

C++ 编译器警告和错误是如何定义的,它们是否曾经包含在标准中

C++ 编译器警告和错误是如何定义的,它们是否曾经包含在标准中,c++,c,compiler-construction,standards,C++,C,Compiler Construction,Standards,下面是关于这个问题的讨论。编译器错误和警告是否曾经被指定为标准,如果没有,为什么没有。我已经在gcc和vs中编写了很长时间,了解到警告和错误试图告诉您的内容并不是一种统一的体验。对于像.net和java这样的语言,一个实体拥有总体控制权,这并不是一个有趣的问题。标准的警告、错误和级别分类难道没有价值吗。对于这些标准的编译器数量,我最感兴趣的是C++或C。 据我所知,语言标准仅定义一致性语言实现(例如编译器)在一致性程序源上的功能。它们没有定义警告可以是什么。他们确实提到了“未定义”或“特定于实现

下面是关于这个问题的讨论。编译器错误和警告是否曾经被指定为标准,如果没有,为什么没有。我已经在gcc和vs中编写了很长时间,了解到警告和错误试图告诉您的内容并不是一种统一的体验。对于像.net和java这样的语言,一个实体拥有总体控制权,这并不是一个有趣的问题。标准的警告、错误和级别分类难道没有价值吗。对于这些标准的编译器数量,我最感兴趣的是C++或C。 据我所知,语言标准仅定义一致性语言实现(例如编译器)在一致性程序源上的功能。它们没有定义警告可以是什么。他们确实提到了“未定义”或“特定于实现”的行为


例如,GCC可能会根据其版本(4.6比4.5更精确)和要求的优化给出不同的警告。

据我所知,语言标准仅定义一致性语言实现(例如编译器)在一致性程序源上的功能。它们没有定义警告可以是什么。他们确实提到了“未定义”或“特定于实现”的行为

例如,GCC可能会根据其版本(4.6比4.5更精确)和请求的优化给出不同的警告。

它(显然?)因语言而异

C标准根本不需要任何警告。它要求对任何违反约束或语法规则的翻译单元进行“诊断”,但不要求拒绝该翻译单元。翻译单元必须被拒绝的唯一情况是,它包含的
#error
指令在#退出时未被
#删除。C++规则是相似的。gcc通常会警告违反约束的情况,不过您可以通过
-pedantic errors
进行更改

它的一个优点是允许编译器实现扩展。例如,如果它将
0b11001001
识别为二进制常量,它可以发出语法错误警告,然后继续编译程序

另一方面,Ada要求编译器拒绝带有错误的源文件,并要求对某些构造发出编译时警告(这不会导致编译失败)

至于定义,警告是一种不会导致编译失败的诊断

定义分类是有用的,但跨语言这样做是不切实际的。

它(显然?)因语言而异

C标准根本不需要任何警告。它要求对任何违反约束或语法规则的翻译单元进行“诊断”,但不要求拒绝该翻译单元。翻译单元必须被拒绝的唯一情况是,它包含的
#error
指令在
#退出时未被
#删除。C++规则是相似的。gcc通常会警告违反约束的情况,不过您可以通过
-pedantic errors
进行更改

它的一个优点是允许编译器实现扩展。例如,如果它将
0b11001001
识别为二进制常量,它可以发出语法错误警告,然后继续编译程序

另一方面,Ada要求编译器拒绝带有错误的源文件,并要求对某些构造发出编译时警告(这不会导致编译失败)

至于定义,警告是一种不会导致编译失败的诊断


定义分类是有用的,但跨语言这样做是不切实际的。

我要求一种语言的一个编译器与同一语言的另一个编译器进行更多的比较是徒劳的。没有办法将不同的语言习语协调成所有语言的一组统一错误。如果不指定您感兴趣的语言,我怀疑你的问题太宽泛了,无法得到有意义的答案。根据你的建议编辑。与同一种语言的另一个编译器相比,我问得更多是徒劳的。没有办法将不同的语言习语协调成所有语言的一组统一错误。如果不指定您感兴趣的语言,我怀疑您的问题太广泛,无法得到有意义的答案。请按照您的建议进行编辑