标准库是否符合标准?

Naw*_*waz 4 c++ compiler-construction gcc standards-compliance standard-library

是标准库要求是标准的符合性?我觉得标准库不符合标准.这种感觉的基础是编译器生成的错误消息.例如,某些时候GCC会给出错误消息,这些消息以前缀__gxx和许多其他内容开头,我现在还不记得了.但是看到它们让我觉得这些是特定于编译器的消息,并且不同的编译器将无法编译由GCC提供的标准库,反之亦然.这是真的吗?

换句话说,问题可以是:

  • 一个编译器提供的标准库可以与其他编译器一起编译吗?
  • 当我们说某个特定的编译器符合标准时,它是否自动意味着它附带的stdlib也符合标准?或者它只是意味着这个编译器可以编译我们编写的符合标准的代码,程序员?
  • 我可以在我的项目中使用由一个编译器提供的标准库,该项目使用不同的编译器来编译项目吗?便携性是否与标准一致性相同?

这些问题是不同的角度来看同一个问题.所以,当我们说编译器X符合标准时,请帮助我理解它究竟意味着什么.

ybu*_*ill 5

标准库是实现的细节.在标准不要求它由'文件'[标题]组成的意义上,它甚至可能不被"编译":

174)标题不一定是源文件,标题名称中<和>分隔的序列也不一定是有效的源文件名(16.2).

该标准仔细地简化了对实现的要求,因此库可以"内置"到编译器(也就是内在函数).例如,扩展std名称空间或#defining标准库中使用的名称会为您提供未定义的行为.