Nó thực sự không phải là 'danh sách lớn', xem xét bạn quan tâm đến thay đổi C++ giữa hai.
4.0.0.8 chỉ là một phiên bản vá lỗi của 4.0, có ghi chú phát hành đang ở đây: http://gcc.gnu.org/gcc-4.0/changes.html
4.3.2 là một phiên bản vá lỗi của 4.3, có ghi chú phát hành đang ở đây: http://gcc.gnu.org/gcc-4.3/changes.html
Nếu bạn nhìn tại sự khác biệt giữa chúng, tôi nghĩ rằng danh sách sau đây bao gồm những khác biệt quan trọng nhất giữa GCC 4.0 và 4.3 mà bạn thực sự quan tâm.
GCC 4.3.2 có (bao gồm cả những thay đổi từ GCC 4.1 và GCC 4.2):
Experimental support for the ISO C++0x standard (đó là một liên kết)
long long
hiện đang hỗ trợ chính thức trong C++ (mặc dù đó là một phần mở rộng được cung cấp trong GCC cũ hơn)
- Mẫu
extern
được hỗ trợ
- Dấu ngoặc nhọn bên phải như bạn thấy trong
std::vector<std::vector<int>>
hiện được hỗ trợ (lưu ý thiếu khoảng cách giữa hai số >
ở cuối khai báo).
- experimental support for Variadic Template Arguments
- Static assertions
- và một số người khác
More TR1 thư viện hỗ trợ
<regex>
(gcc 4.3), <random>
(gcc 4.2), và <complex>
(gcc 4.2)
Xử lý mức hiển thị C++ đã được đại tu. (GCC 4.2)
Mức độ hiển thị hạn chế được truyền từ lớp này sang thành viên khác, từ chức năng đến thống kê cục bộ và từ mẫu và đối số mẫu sang instantiations, trừ khi hiển thị rõ ràng.
Thuộc tính mức độ hiển thị cho một lớp phải nằm giữa khóa lớp và tên chứ không phải sau dấu ngoặc đóng.
Thuộc tính hiện được phép cho enums và công cụ chỉ định kiểu được xây dựng chỉ khai báo một loại.
Thành viên của không gian tên ẩn danh hiện là cục bộ cho một đơn vị dịch cụ thể, cùng với bất kỳ khai báo nào sử dụng chúng, mặc dù chúng vẫn được coi là có liên kết bên ngoài cho ngữ nghĩa ngôn ngữ.
Một mẫu mở rộng không có giấy tờ đã được gỡ bỏ trong GCC 4.2 (đã được tán thành trong 4,1)
The (không có giấy tờ) mở rộng mà được phép mẫu với các đối số mặc định để bị ràng buộc với các thông số template mẫu với các thông số ít đã bị loại bỏ. Ví dụ:
template <template <typename> class C>
void f(C<double>) {}
template <typename T, typename U = int>
struct S {};
template void f(S<double>);
không còn được chấp nhận bởi G ++. Lý do mã này không được chấp nhận là S là một mẫu có hai tham số; do đó, nó không thể bị ràng buộc với C chỉ có một tham số.
Ngoài ra, kiểm tra porting to GCC 4.3 guide, nơi một số nội dung quan trọng, như:
Backward tiêu đề tương thích/phản đối đã được gỡ bỏ.
Chủ yếu là điều này có nghĩa một loạt các tiêu đề được tiêu chuẩn đã được loại bỏ, như <iostream.h>
(sử dụng tiêu chuẩn <iostream>
), <hash_map.h>
(sử dụng <tr1/unordered_map>
) <hashtable.h>
(sử dụng <tr1/unordered_map>
hoặc <tr1/unordered_set>
tùy theo nhu cầu) vv Một lần nữa, không phải là một việc lớn. thực thi
chặt chẽ các tiêu chuẩn
Ví dụ, chữ ký vào mẫu hai đối số main
's phải chính xác.
Không có chức năng trùng lặp tên tham số
void func(int x, int x); // now an error
Và đã có bản vá lỗi khác nhau, cũng như thay đổi mà tôi không nghĩ rằng thực sự ảnh hưởng đến cách bạn muốn viết mã cạnh tranh (như loại bỏ/bổ sung các cờ trình biên dịch mới) và loại bỏ các công cụ như các toán tử <?
và >?
(đã từng sử dụng các trình biên dịch đó?).
Tất cả trong tất cả tôi không nghĩ rằng sự khác biệt giữa hai sẽ gây ra cho bạn nhiều đau buồn nếu bạn phải viết mã cho cả hai trình biên dịch.
Thanh toán chi tiết -> http://gcc.gnu.org/releases.html – DumbCoder
@DumbCoder thats a list.I chỉ muốn biết nếu có bất kỳ sự khác biệt lớn nào b/w hai. các cuộc thi lập trình trực tuyến như SPOJ có hai phiên bản C++, nếu không có sự khác biệt nào thì SPOJ sẽ chỉ có phiên bản thứ hai (tức là phiên bản mới nhất, như SPOJ dành cho các trình biên dịch ngôn ngữ lập trình khác) –