2013-05-09 34 views
5

Tôi có một số mã được viết bằng cách sử dụng các tiêu chuẩn C++ 11, và phiên bản g ++ của chúng tôi là 4.4.6, vì vậy theo như tôi có thể nói, C++ 11 nên được hỗ trợ (từ 4.3 trở đi).-std = C++ 11 cờ không được nhận ra trong G 4.4.6

Tuy nhiên khi cố gắng để biên dịch với những lá cờ "-std = C++ 11 -std = gnu ++ 11", tôi nhận được lặp đi lặp lại các lỗi

cc1plus: error: unrecognized command line option "-std=c++11" 
cc1plus: error: unrecognized command line option "-std=gnu++11" 

Biên soạn với -std = C++ 0x sản xuất lỗi như

DeviceInfo.cpp:22: error: expected initializer before ‘:’ token 

tương ứng với dòng mã này:

for (cl::Platform& plat : platforms) 

là một này C++ 11 bit cụ thể của Cú pháp ? (Nó không giống như nó cho tôi, nhưng tất cả các mã này đã được đưa ra như là một ví dụ rất nên làm việc theo quy định với các trình biên dịch.

Bất kỳ sự giúp đỡ?

+4

Bạn sẽ cần GCC> = 4,7 để nhận cờ 'C++ 11'. 4.4 quá cũ, bạn sẽ không nhận được phạm vi dựa trên AFAIK, ngay cả với '-std = C++ 0x'. Xin vui lòng _at ít nhất_ đọc trang người đàn ông cho trình biên dịch, các tùy chọn nó hỗ trợ được liệt kê trong đó. – Mat

Trả lời

10

-std=c++11 thiết lập được hỗ trợ bởi các phiên bản sau nhiều GCC. sự hỗ trợ ban đầu cho non trẻ C++ 11 đã được kích hoạt bởi -std=c++0x thiết lập. Đây có lẽ là những gì bạn nên thử.

Và vâng, for cú pháp bạn đang cố gắng để sử dụng là chủ yếu C++ 11 cú pháp.

+0

Chúc mừng sự giúp đỡ nhanh chóng :) – Joe

+0

Tôi rất cảm kích nếu liên kết nguồn cũng được chia sẻ. –

0
for (cl::Platform& plat : platforms) 

có, nó là C++ 11 cách sử dụng cụ thể. GCC 4.7 hoặc mới hơn hỗ trợ C++ 11 với tùy chọn -std = C++ 11 trong khi đó.

3

Dường như phạm vi dựa trên phạm vi cho các vòng được hỗ trợ trong phiên bản 4.6 và mới hơn.

This page hiển thị hỗ trợ GCC cho các tính năng C++ 11.

Các vấn đề liên quan