Làm cách nào để sử dụng C ++ 11 với g ++?


21

Tôi hiện đang gõ tất cả các mã của mình trong gedit và sử dụng thiết bị đầu cuối để biên dịch các chương trình của tôi. Để làm như vậy, tôi đang gõ:

$ g++ main.cpp -o main
$ ./main

Và điều này đang làm việc. Tuy nhiên, nó không sử dụng C ++ 11. Làm cách nào tôi có thể kiểm tra phiên bản C ++ của mình và cũng có thể biên dịch qua thiết bị đầu cuối bằng C ++ 11?



Bạn có phải luôn luôn bao gồm -std = c ++ 11 hoặc có cài đặt để mỗi lần tôi biên dịch nó sẽ tự động khiếu nại kiện c ++ 11 hoặc
Pháp Mike

Câu trả lời:


53

Điều này bạn có thể làm bằng cách sử dụng -std=c++11cờ. Đây là một ví dụ:

g++ -std=c++11 -Wall -Wextra -Werror main.cpp -o main

Chế độ này có thể được chọn bằng -std=c++11cờ dòng lệnh hoặc -std=gnu++11để bật các phần mở rộng GNU. ( Nguồn )

Xem giải thích của các cờ khác dưới đây. Tôi tin tưởng sâu sắc rằng sử dụng ít nhất những lá cờ lỗi đó sẽ giúp cuộc sống của bạn dễ dàng hơn trong thời gian dài. Khi bạn có kiến ​​thức tốt hơn về những gì kịch bản của bạn làm, bạn có thể bỏ qua các cảnh báo nếu cần để đạt được kết quả nhưng nó không phải là tiêu chuẩn. Hy vọng điều này sẽ giúp bạn. Đây là một nơi tốt để bắt đầu đọc.

  • -Wall - cho phép tất cả các cảnh báo lớn.
  • -Wextra - cho phép các cảnh báo quan trọng khác.
  • -Werror- biến tất cả các cảnh báo thành lỗi, khiến cho các phần tổng hợp bị lỗi nếu có bất kỳ cảnh báo nào được báo cáo.

Nguồn:

  1. GCC: Tóm tắt tùy chọn
  2. GCC: Tùy chọn để yêu cầu hoặc loại bỏ cảnh báo

5
Cảm ơn! Bạn có phiền giải thích mục đích nào "-Wall" và "-Werror" phục vụ trong lệnh đó không?

1
Đã thêm nó vào câu trả lời của tôi.
Videonauth

7
@ dhaneku.b: Tại sao không đọc tài liệu? Đó là những gì nó ở đó cho.
Cuộc đua nhẹ nhàng với Monica

9
@LightnessRacesinOrbit Bởi vì tài liệu không nhất thiết phải giải thích lý do tại sao Videonauth nghĩ rằng điều quan trọng là thêm chúng, mặc dù thực tế là chúng không có trong dòng lệnh ví dụ ban đầu, hoặc nhất thiết phải giải thích loại tương tác quan trọng nào "-Wall" và " -Werror "có thể có" -std = c ++ 11 ". (Vâng, câu trả lời cho câu hỏi sau là "không có gì đặc biệt", nhưng tài liệu này sẽ không nói điều đó, và có một loạt các trường hợp góc kỳ lạ không được đề cập trong tài liệu. "Sự vắng mặt của bằng chứng không phải là ' bằng chứng vắng mặt ", và tất cả những thứ đó.)
RM

2
Chế độ này có thể được chọn bằng -std=c++11cờ dòng lệnh hoặc -std=gnu++11để bật các phần mở rộng GNU. ( Nguồn )
Videonauth
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.