我只能在标准草案N4582中发现
[res.on.headers / 1] C ++标头可能包含其他C ++标头。
似乎没有指定C ++标头是否可以包含C标准标头。
如果允许,即使不包含此标头,使用在C标准标头中定义的全局名称是否不安全(因为程序可能会通过某些C ++标准标头隐式包含标头)?
对于这个问题,您可以跟进(名称冲突),是的,当然可以。原因是C ++标准库包括<c:::>
用于C标准库内容的C ++头,并且该标准明确允许它们在全局名称空间中提供名称(除了必须在中提供它们::std
)。
此外,基于C ++标准的附件D [depr],C标准库标头(<:::.h>
版本)也是C ++标准库的一部分(尽管已弃用)。这意味着[res.on.headers] / 1允许C ++标头包含它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句