tl; dr:我可以以某种方式使这段代码在C++ 14(GCC 6.3)中运行吗?
int main(){
#include<vector>
std::vector<int> v{1,2,3};
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但下面的代码工作得很好!
#include <iostream>
using namespace std;
int main() {
#include<cstdio>
using namespace __gnu_cxx;
printf("Hello world\n.");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
使用C++ 14(gcc-6.3)代码时不会编译错误消息
error: 'namespace' definition is not allowed here
namespace std
^~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
我为什么要这样做?
我无权访问允许编码的函数.我不能在全球范围内#include.
UPD:更改为cstdlib也有效问题不是由标题保护(根据我)排除,而是名称空间问题.因为C++头文件具有命名空间std,而c头文件没有.我想问一下命名空间问题是否有一些调整?
我可以以某种方式使这段代码工作
不可以.标准头文件(通常是大多数库头文件)必须包含在全局命名空间范围内.
但下面的代码工作得很好!
但它不能保证工作.它恰好正常工作,可能是因为<iostream>已经包含了<cstdio>所以你自己的包含被标题保护删除了.
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |