2013-04-27 25 views
26

Tôi hiện đang sử dụng gcc 4.6.3. Sự hiểu biết của tôi là gcc theo mặc định sử dụng tiêu chuẩn gnu89 và tôi muốn bật C11, tiêu chuẩn C mới nhất. Tôi cố gắng:Làm thế nào để bật c11 trên các phiên bản sau của gcc?

[[email protected] test ]$ gcc -std=c11 -o test test.c 
cc1: error: unrecognised command line option ‘-std=c11’ 

tôi thay c11 với gnu11 và tôi nhận được lỗi tương tự. Cách chính xác để bật chuẩn C mới nhất cho gcc là gì?

:

+0

Nếu bạn quan tâm đến một trình bao bọc đang hoạt động xung quanh gcc mà việc đưa nhiều bit thú vị của C11 có một cái nhìn vào P99, p99.gforge.inria.fr –

Trả lời

44

-std=c11 là lựa chọn đúng nhưng không có sẵn trong gcc 4.6 (Lưu ý Tôi quan tâm đến tiêu chuẩn C mới nhất và không phải là C++ mới nhất một.).

Bạn cần ít nhất gcc 4.7 để được hỗ trợ tùy chọn này. Trong một số phiên bản cũ hơn như gcc 4.6, tùy chọn -std=c1x khả dụng với hỗ trợ thử nghiệm (tức là rất hạn chế) của C11.

Cũng lưu ý rằng phiên bản hiện tại của gccgcc 4.8.0.

+1

câu trả lời chính xác, nhưng với kinh nghiệm của tôi là '- std = c11' chưa hoạt động, cẩn thận. Có một số phần của C11 thiếu trong gcc, vì vậy nó không phải là (chưa) dễ dàng để làm việc với C11 và gcc. –

+1

4.8.1 vừa được phát hành http://gcc.gnu.org/ml/gcc-announce/2013/msg00004.html với sự hỗ trợ đầy đủ – bluszcz

+3

@bluszcz Đó là nói về g ++ và C++ 11, thực hiện tương tự cho gcc và C11? – complistic

1

Chỉ cần cho bạn biết GCC 4.9.x có hỗ trợ đầy đủ hơn nhiều so với các phiên bản cũ hơn. Nếu bạn thực sự cần phải sử dụng tính năng này, hãy chuyển sang bất cứ điều gì 4.8+ Đây là tình trạng hỗ trợ - https://gcc.gnu.org/wiki/C11Status

0

Bên trong một tập tin .spec:

%define gcc_ver %(if [[ $(gcc -dumpversion) > 4.7 ]]; then echo 1; else echo 0; fi) 
# Do we use c11 ? 
%if 0%{?gcc_ver} < 1 
    %global std_c11 0 
%else 
    %global std_c11 1 
%endif 

# if the configure of the package supports it add : 
%if %{std_c11} 
    --enable-cxx11 \ 
%endif 
+3

Mặc dù mã này có thể trả lời câu hỏi, cung cấp ngữ cảnh bổ sung liên quan đến _why_ và/hoặc _how_ nó trả lời câu hỏi sẽ cải thiện đáng kể giá trị dài hạn của nó. Xin vui lòng [sửa] câu trả lời của bạn để thêm một số lời giải thích. –

2

gcc 5.2.0 làm việc với tùy chọn dòng lệnh '-std = c11'

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