Tìm hiểu các tiêu chuẩn C (C standards) - quy định cách trình biên dịch nên xử lý code. Ví dụ kinh điển: kiểu trả về của main().
Vấn đề main() void
void main() { /* code */ }
Turbo C chấp nhận nhưng các trình biên dịch hiện đại (GCC, Clang, MSVC) báo lỗi. Tiêu chuẩn quy định main() phải trả về int.
Tiêu chuẩn C là gì?
Định nghĩa hành vi chuẩn của chương trình: cách chạy, định nghĩa hàm built-in, v.v. Tiêu chuẩn mới nhất (tính đến 2018): ISO/IEC 9899:2018 (C17/C18).
Khai báo main() chuẩn
// Không tham số
int main() {
/* code */
return 0;
}
// Có tham số dòng lệnh
int main(int argc, char *argv[]) {
/* code */
return 0;
}
Lưu ý: Luôn trả về 0 khi thành công. Các trình biên dịch cũ cho phép bỏ return 0 nhưng không khuyến khích.
Một số tiêu chuẩn quan trọng khác
- Kiểu dữ liệu: kích thước int, long, pointer phụ thuộc implementation
- Hành vi未定义 (undefined behavior): tràn số dấu, truy cập ngoài mảng, v.v.
- Thư viện chuẩn:
, , ,...
Tuân thủ tiêu chuẩn giúp code portable (chạy được trên nhiều nền tảng/trình biên dịch khác nhau).