tl; dr:我可以以某种方式使此代码在C ++ 14(GCC 6.3)中工作吗?
int main(){
#include<vector>
std::vector<int> v{1,2,3};
return 0;
}
但是下面的代码可以正常工作!
#include <iostream>
using namespace std;
int main() {
#include<cstdio>
using namespace __gnu_cxx;
printf("Hello world\n.");
return 0;
}
使用C ++ 14(gcc-6.3)代码时不会编译错误消息
error: 'namespace' definition is not allowed here
namespace std
^~~~~~~~~
为什么我要这样做?
我无法在我可以进行编码的功能范围之外进行访问。我无法#include在全球范围内。
UPD:更改为cstdlib也可以解决问题,并不是标题保护程序排除了此问题(根据我),而是名称空间问题。由于C ++头文件具有名称空间std,而c头文件则没有。我想问一下是否对名称空间有一些调整?
我可以以某种方式使此代码有效吗
否。必须将标准标头(以及通常的大多数库标头)包括在全局名称空间范围中。
但是下面的代码可以正常工作!
但这并不能保证能正常工作。它只是碰巧起作用了,可能是因为<iostream>
已经包含了<cstdio>
,所以标题保护程序删除了您自己的包含。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句