【发布时间】:2016-10-27 14:22:48
【问题描述】:
我是 C++ 新手,我正在尝试获取一个基本程序来初始化一个短无符号整数列表。我正在使用 scygwin 和 g++ 编译和运行。
下面是.cpp文件中的代码:
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <typeinfo>
using namespace std;
int main (int argc, char* argv[]) {
list<int> events;
return 0;
}
我通过在 cygwin 终端中输入以下命令来运行:
$ g++ -o test.out test.cpp
但是,我收到以下编译错误:
test.cpp:在函数“int main(int, char**)”中:test.cpp:16:1:错误: 此范围列表事件中未声明“列表”;
^ test.cpp:16:6:错误:“int”之前的预期主表达式 列出事件; ^
我对为什么 list 不在范围内感到困惑,因为我使用的是命名空间 std?我在 c++ 论坛上发现了一个类似的问题,但我的问题将得到解决。有人知道这是什么问题吗?
-保罗
【问题讨论】:
-
#include
-
谢谢。但是当我
using namespace std时为什么不自动包含? -
当你#include一个文件时,它就像一个文字复制粘贴。你会得到很多隐藏在命名空间 std 中的项目。当您说
using namespace std;时,您实际上并没有导入任何内容,而只是省去了必须在该命名空间中限定项目的麻烦。 -
为了清楚起见,您是说
- 隐藏在命名空间 std 中,直到我明确包含它?我想我一直在假设每个 c++ 文件中总是有一个隐含的
#include <std>,这将使您可以访问该命名空间中的任何内容。 -
命名空间不是代码的集合。它只是一个帮助组织代码的命名标签。查看我的更新答案
标签: c++ list namespaces