2011-12-23 27 views
11

Tôi đã tải xuống và xây dựng gcc 4.6.2. Tôi thấy rằng đối với các tính năng của C++ 11, vẫn cần tùy chọn dòng lệnh -std=c++0x. Tại sao vậy? Không phải là nghĩa vụ phải hỗ trợ nó theo mặc định?Tại sao "-std = C++ 0x" vẫn cần thiết cho g ++ 4.6.2?

$ g++ --version 
    g++ (GCC) 4.6.2 
    Copyright (C) 2011 Free Software Foundation, Inc. 
    This is free software; see the source for copying conditions. There is NO 
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+1

Câu hỏi thú vị. Các trình biên dịch khác (VC10) đã chọn để bao gồm các tính năng mới theo mặc định. Tôi thực sự tự hỏi tại sao họ lại có những con đường khác nhau ở đây. – ereOn

+4

Tôi thấy khó chịu hơn vì thực tế là mặc định không phải là '-std = C++ 98' –

+0

Giữ nó đơn giản, ngu ngốc. Bạn muốn sử dụng một tiêu chuẩn khác? Chỉ định nó. Hoặc thậm chí luôn luôn chỉ định tiêu chuẩn để sử dụng. Nếu đó không phải là sở thích của bạn, hãy sử dụng một IDE sẽ tự động cấu hình nó. Hoặc sử dụng lại tệp cấu hình bổ sung của Makefile. – Geoffroy

Trả lời

11

  • C++ 11 chỉ 4 tháng tuổi và hỗ trợ cho nó là xa là hoàn chỉnh hoặc thử nghiệm
  • thay đổi mặc định mà không có một thông báo lớn và giai đoạn chuẩn bị cho mọi người là không tốt đẹp
  • Nó không rõ ràng nếu mặc định sẽ bao giờ thay đổi (xem -std = C99).
+0

Và đừng quên rằng loạt GCC 4.6 đã gần 9 tháng tuổi, và họ sẽ không có những thay đổi lớn như thế ít hơn 5 tháng trước đó. (Bản phát hành 4.6.2 có thể không cũ, nhưng đó chỉ là sửa lỗi nghiêm ngặt.) – ams

+1

@ams: Thật vậy, tôi đã xem nó rõ ràng, nhưng nó có lẽ là hữu ích để đề cập đến. – PlasmaHH

2

Nó vẫn còn cần thiết, và có lẽ sẽ ở lại theo cách này trong tương lai gần, bởi vì C++11 has incompatibilities with C++03. Thay đổi G ++ để biên dịch C++ 11 theo mặc định sẽ phá vỡ rất nhiều mã hiện có.

+2

Không thực sự * rất nhiều * của mã hiện có.Ủy ban đã làm một công việc tốt để giảm thiểu số lượng mã hiện có bị phá vỡ. –

+2

@ R.MartinhoFernandes, các lập trình viên đã làm một công việc tuyệt vời trái ngược! –

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