執行C++ 11我有當我執行在終端的Ubuntu條命令「做」的問題。 我的生成文件的代碼是:如何使用makefile文件
all: temp p1
%: %.cc g++ -lm -lcrypt -O2 -std=c++11 -pipe $< -o [email protected]
當然,我的文件是temp.cc和p1.cc,但我的問題是在p1.cc,其中的代碼是:
#include <bits/stdc++.h>
using namespace std;
int main(){
vector<int> vec = {4,6,8,9,8,7,1,3,4,5,0,1};
for(auto i : vec)
cout<<i<<" ";
cout<<endl;
return 0;}
我使用 '使' 錯誤是:
[email protected]:~/P$ make
g++ p1.cc -o p1
p1.cc: In function ‘int main()’:
p1.cc:7:44: error: in C++98 ‘vec’ must be initialized by constructor, not by ‘{...}’
vector<int> vec = {4,6,8,9,8,7,1,3,4,5,0,1};
^
p1.cc:7:44: error: could not convert ‘{4, 6, 8, 9, 8, 7, 1, 3, 4, 5, 0, 1}’ from ‘<brace-enclosed initializer list>’ to ‘std::vector<int>’
p1.cc:9:11: error: ‘i’ does not name a type
for(auto i : vec)
^
p1.cc:11:2: error: expected ‘;’ before ‘cout’
cout<<endl;
^
p1.cc:12:2: error: expected primary-expression before ‘return’
return 0;
^
p1.cc:12:2: error: expected ‘)’ before ‘return’
make: *** [p1] Error 1
使用下一個命令行,編譯:
g++ --std=c++11 p1.cc -o p1
和執行是好的:
[email protected]:~/P$ ./p1
4 6 8 9 8 7 1 3 4 5 0 1
請幫助我,我不明白爲什麼有問題,感謝您的支持:)
你缺少'G ++'前一個換行符在你的Makefile,通常,您鏈接到圖書館應該來的'G ++'命令的結束。而且,出於某種原因,'g ++'沒有發現你的'-std = C++ 11'標誌或者它不工作。 –
另外,你還沒有'#include'd'vector'。 –
使用「#include」我得到了所有庫,這是使用g ++編譯器的一個優點,但是感謝您的幫助。 –
Rik4chu