01/10/2018, 01:13
C11 và C99 có những khác biệt như thế nào và dùng cái nào thì tốt hơn?
Em vừa đọc trong một quyển sách nói là chuẩn C11 và C99 có một số khác biệt nhỏ, nhưng khi em tìm trên mạng thì không thấy tài liệu nào nói về điều này cả, không biết C11 và C99 có những khác biệt như thế nào và dùng cái nào thì tốt hơn ạ ???
Bài liên quan
Ý bạn là C++ 11 và C++ 99 phải không nhỉ?
C++ 11 là C++ phiên bản năm 2011, C++ 99 là C++ phiên bản năm 1999. Về khác biệt thì bạn có thể xem ở đây nè, ví dụ với List: http://www.cplusplus.com/reference/list/list/
Phiên bản hiện tại là C++ 17 thì phải, Về cơ bản thì phiên bản mới hơn thường chỉ bổ sung tính năng, hàm, tối ưu xử lý v…v… chứ đa số code viết theo chuẩn C++ 99 đều tương thích với các chuẩn mới hơn. Bạn cứ lấy phiên bản mới nhất mà học.
Ý của em là C11 và C99 trong lập trình C cơ, không biết anh có tài liệu nào về hai cái này không ạ ?
Vậy mình nhầm . Bên C thì mình không có.
TL;DR: C11 có những thay đổi cơ bản:
T a[n];
(variable-length array) là “tùy hỉ” (optional)<thread.h>
(lưu ý vẫn bị leak abstraction)<uchar.h>
Generic
<stdalign.h>
(tức là canh kích cỡ 1 struct cho chẵn byte)với lại thêm hàm nhập xuất có đuôi _s.
Tiện thể cho em hỏi luôn là làm sao để xác định chuẩn C đang dùng ạ ?
hình như C11 thì cho phép
for(int i = 0; i < n, i++)
còn C99 phảiHình như kể từ C99 thì đã cho phép
for(int i = 0; i<n; i++)
rồi thì phải`Em nhớ C99 đã cho phép
for (int i = 0; i < n; ++i)
rồi mà anh nhỉTùy trình biên dịch bạn dùng. gcc thì có hai cách xác định, còn VS không phải là C
Em dùng gcc vậy xác định bằng cách nào ạ ?
How to find my current compiler's standard, like if it is C90, etc
tại cũng không nhớ lắm, nhiều lần code nó bảo phải thêm option vào cho compiler mới được.
Em không làm được, mà hình như bài đó là cho Linux mà
Tức là: (TL;dr)
#if... #else... #endif
-std={c89/c99/c11/c14/c1x}
khi gọi lên