这个代码标准符合吗?
#include <stdio.h>
#include <cstdio>
int main() {
FILE *f1 = 0;
std::FILE *f2 = f1;
}
解释:标准说[标题]:
[...] 每个标题的内容
cname
应与相应标题的内容相同name.h
[...] 如同被包含一样。然而,在 C++ 标准库中,声明 [...] 在 namespace 的命名空间范围 (3.3.6) 内std
。未指定这些名称是否首先在全局命名空间范围内声明,然后通过显式使用声明(7.3.3)注入命名空间。std
因此,如果它们不是通过显式使用声明注入的,它们可能是不同的类型吗?我不认为“好像通过包含”短语是决定性的,因为文本的另一半显然与此要求相矛盾,要求名称在std
命名空间内。