2011-10-20 181 views
0

首次尝试在不使用Visual Studio的情况下编译一些代码。安装mingw并设置环境路径变量。然后试图编译这段代码:mingw编译器错误

#include <iostream> 
#include <vector> 

int main() { 
typedef std::vector<int> Container; 
typedef std::vector<int>size_type size; 
typedef std::vector<int>iterator iter; 

Container container; 

for (size i = 0; i != 1000000; ++i) { 
container.push_back(i); 
} 

for (iter i = container.begin(); i != container.end(); ++i) { 
std::cout << *i << " " << std::endl; 
} 

system("PAUSE"); 
return 0; 
} 

通过打开一个CMD壳,将单个源文件和打字的目录:

g++ main.cpp 

,但我得到了很多的错误消息如下:

main.cpp: In function 'int main()': 
main.cpp:6:35: error: expected initializer before 'size' 
main.cpp:7:34: error: expected initializer before 'iter' 
main.cpp:11:6: error: 'size' was not declared in this scope 
main.cpp:11:11: error: expected ';' before 'i' 
main.cpp:11:18: error: 'i' was not declared in this scope 
main.cpp:15:6: error: 'iter' was not declared in this scope 
main.cpp:15:11: error: expected ';' before 'i' 
main.cpp:15:34: error: 'i' was not declared in this scope 
main.cpp:19:15: error: 'system' was not declared in this scope 

我在这里错过了很痛苦的东西吗?谢谢。

回答

3
typedef std::vector<int>size_type size; 
typedef std::vector<int>iterator iter; 

把它变成:

typedef std::vector<int>::size_type size; 
typedef std::vector<int>::iterator iter; 
+0

啊,谢谢。但是我仍然得到:main.cpp:在函数'int main()'中: main.cpp:19:15:错误:'系统'未在此范围内声明 –

+0

“system()”是一个posix函数,并且你正在开发窗口。你必须找到另一种方法来暂停程序,比如等待任何使用'std :: cin'键的键。 – Griwes

+0

谢谢......现在编译:)写在记事本C++中,而通常我猜Visual Studio会指出::的问题。 –

0

typedef std::vector<int>::size_type应该typedef std::vector<int>::size_type size;

1

你缺少(在它和迭代器)矢量定义和SIZE_TYPE之间::操作。