2012-07-10 9 views
6

Tôi có Eclipse Juno C++ (ID xây dựng: 20120614-1722). Tôi đang cố gắng thiết lập các đối số gọi trình biên dịch với lệnh -std = C++ 11 hoặc -std = C++ 0x nhưng trong khi biên dịch mã dưới đây. Không có "Cài đặt Công cụ" trong Eclipse Juno (ít nhất là cho Mac), vì vậy tôi không thể chuyển đến "C/C++ Build -> Settings -> Tool Settings". trình biên dịch của tôi là GCC 4.8.0Không thể thiết lập Eclipse Juno C++ với std = C++ 11

#include <iostream> 
#include <sstream> 
#include <vector> 
using namespace std; 
int main(void) { 
    vector<string> v = {"a","b","c"}; 
    for(string s: v){ 
     cout << s << endl; 
    } 
    return 0; 
} 

tôi nhận:

HelloWorld.cpp:16:33: error: could not convert ‘{"a", "b", "c"}’ from ‘<brace-enclosed initializer list>’ to ‘std::vector<std::basic_string<char> >’ 
HelloWorld.cpp:17:16: error: range-based ‘for’ loops are not allowed in C++98 mode 
+2

Bạn đang sử dụng thư viện chuẩn _compiler_ và thư viện chuẩn nào? – ildjarn

+0

Trình biên dịch GCC 4.8.0 –

+1

bạn có đảm bảo rằng bạn đã đặt các tùy chọn cho g ++ (và không phải là một phần khác của chuỗi công cụ)? : làm điều này: C/C++ Build -> Settings -> Tool Settings -> GCC C++ Compiler -> Miscellaneous -> Flags khác. Đặt -std = C++ 0x ở cuối. –

Trả lời

5

bạn có thể để làm theo các bước tôi đã mô tả trong câu trả lời này: Eclipse CDT C++11/C++0x support

Một khả năng là, rằng lựa chọn của bạn là áp dụng cho phần sai của chuỗi công cụ.

-1

Lý do bạn không thấy Tool Cài đặt là bởi vì khi tạo dự án, bạn nên chọn thực thi thay vì GNU Autotools

+0

Nếu bạn cần và muốn autotools và cấu hình nó một cách chính xác mã của bạn biên dịch tốt nhưng nhật thực vẫn cho thấy lỗi cú pháp. Chọn không sử dụng autotools không có giải pháp cho vấn đề. –

0

Tôi chỉ phải đối mặt với chính xác cùng một vấn đề. Vui lòng kiểm tra xem dự án của bạn có tùy chỉnh "makefile" (*.mk) hay không. Nếu nó có "makefile", hãy đặt phần sau vào "makefile" của bạn và biên dịch.

"LOCAL_CFLAGS: = -fexceptions -std = C++ 0x -std = C++ 11"

PS: LOCAL_CFLAGS là dành cho những lá cờ biên dịch mà bạn có thể đặt trong "xxx> Miscellaneous ". Và để thẳng thắn, tôi không biết làm thế nào để giải quyết nó nếu dự án của bạn không có tùy chỉnh "makefile". Tuy nhiên, Eclipse Juno theo nghĩa đen không có con đường mà những kẻ ở trên được mô tả ở trên.