'list'未在此范围内声明
'list' was not declared in this scope
我是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"之前的预期初级表达 列表事件; ^
我对为什么列表不在范围中感到困惑,因为我正在使用名称空间std?我在C 论坛上发现了一个类似的问题,但是我的问题将解决。有人知道这里有什么问题吗?
-paul
using namespace std;
不会在您的代码中添加任何功能。这只是意味着您在std
名称空间中引用事物时不必键入std::
,例如std::list
。
要将std::list
的代码库实际包含到您的程序中,您需要添加:
#include <list>
当对这种事情有疑问时,对cpp reference list
进行Google搜索会在此类似的页面上搜索:您可以在其中看到:Defined in header <list>
在顶部。
这是关于using namespace std;
的另一个问题,可能证明有用,以及为什么不应该使用它。我会添加一点以解释名称空间。
在C 程序中很常见将功能组织到类和名称空间中。想象一下,您写了自己的list
课程来处理某些方案。为了防止命名冲突,您将其放在与std
不同的名称空间中。
namespace MyApp {
class list;
void sort(list&);
}
对于大多数大型代码库,您可能仍然更喜欢使用std::list
,但是您需要MyApp::list
。使用名称空间,您可以群集代码并防止类似功能的命名冲突。
摘要
using namespace std;
这样做,因此,如果您在全局名称空间中引用函数或类,则在std
名称空间中寻找它。
#include <list>
实际上在预处理器阶段中插入原型(有关如何访问代码的信息)。
- 错误:未在此范围内声明'reverse'
- 错误:"imread"未在此范围内声明
- 未在此范围内声明错误 'xy'
- Socklen_t未在此范围内声明
- 错误:'[' 之前预期的非限定 id 和错误:'users'未在此范围内声明
- "Main"已在当前范围内声明
- c++ 变量在宏的扩展中没有在这个范围内声明
- C++ 在编译过程中 strtok 函数 Eclipse 说没有在范围内声明?
- 'num1'未在此范围内声明
- 如何找到在本地范围内声明的变量的地址?
- NT状态未在此范围内声明
- 变量未在此范围内声明 数组线性搜索
- 包含文件中的 Typdef "未在此范围内声明"
- 'ClassName'和'ClassInstance'未在此范围内声明
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 代码作为 C 文件工作,但不作为C++文件,错误:'__builtin_types_compatible_p'未在此范围内声明
- 如何修复错误:"vreinterpretq_u32_f64"未在此范围内声明 - 在Android上使用Eigen构建
- 如何修复C++中的"arrStud未在此范围内声明"错误
- 错误:"SHGetKnownFolderPath"未在此范围内声明
- 错误:'Sprite'未在此范围内声明