是否可以编写一个严格符合要求的 C 程序来输出到显示器?

Tux*_*ux1 4 c standards standards-compliance unspecified-behavior output

根据 ISO/IEC 9899:2017:

严格遵守的程序应仅使用本文档中指定的语言和库的那些功能。它不应产生依赖于任何未指定、未定义或实现定义的行为的输出,并且不应超过任何最小实现限制。

然而,几页后,它说:

活动位置是显示设备上该fputc函数输出的下一个字符将出现的位置。将打印字符(由函数定义)写入显示设备的目的isprint是在活动位置显示该字符的图形表示,然后将活动位置前进到当前行的下一个位置。书写方向是特定于语言环境的。如果活动位置位于一行的最终位置(如果有),则显示设备的行为未指定。

由于似乎没有任何方法可以判断活动位置是否位于一行的最终位置,因此无法在不冒调用未指定行为的风险的情况下输出到显示设备,因此不可能编写严格遵守程序。这是一个错误还是我遗漏了什么?

Joh*_*ger 5

由于似乎没有任何方法可以判断活动位置是否位于一行的最终位置,因此无法在不冒调用未指定行为的风险的情况下输出到显示设备

同意,但严格遵守程序的要求并不是要避免所有未指定的行为,而是要

它不应产生依赖于[未指定的行为等]的输出。阿尔]

产生的输出是程序的函数。该输出所针对的设备的行为是设备的函数,与输出本身分开,并且该行为是否被指定或良好定义与程序是否严格符合无关。

是否可以编写一个严格符合要求的 C 程序来输出到显示器?

严格遵守的程序不可能知道或控制它产生的任何输出是否定向到(a)显示器。但即使是这样,也不会影响程序的一致性。从这个意义上说,是的,可以编写严格一致的程序来输出到显示设备。这样做并不比编写一个输出到常规文件的严格一致的程序困难。