是否符合C11实现允许将每个函数编译成无限循环?

问题描述 投票:0回答:1

虽然C ++具有前瞻性进展保证,但我在C11规范中没有看到任何类似的规则。

为每个函数发出无限循环的C11编译器是否符合C11规范?假设它像往常一样进行所有预处理/ etc;它只是一个相当过分热情的优化器。

不可否认,这将是一个相当差的编译器。然而。

language-lawyer c11
1个回答
0
投票

标准的一个程序规则允许实现强制设计者认为合适的任意“翻译限制”,并且如果它们被违反则表现为任意方式,只提供标准中给出的每个翻译限制至少存在一个程序,其中实现过程正确。在给出任何其他程序时,实现可以做任何它喜欢的事情。

此外,标准只关注程序行为,而不是生成的代码,因此在一个无限循环中陷入困境的程序与在生成数据之前没有副作用的数万年运行之间没有实际的区别。结果。

一般来说,问题的正确答案“C标准是否允许编译器以某种愚蠢和无用的方式表现X”是“可能。那么?”标准没有努力禁止编译器做愚蠢的事情,并且标准允许符合要求的实现做某事的事实意味着没有判断这样的行为是否会使某个(或甚至所有)目的的实现无用。

© www.soinside.com 2019 - 2024. All rights reserved.