Cho 2 đoạn mã sau.
Đoạn 1: Viết bằng c:
#include <stdio.h> float main(int a, int b, int c) { printf("Chao cac ban\n"); }Đoạn 2: Viết bằng cpp:
#include <iostream> using namespace std; int main( int n, char x, float t) { cout << "Chao cac ban" <<endl; return 0; }Cả 2 đoạn mã điều chạy được, tuy nhiên nếu compile đoạn mã cpp sẽ dính 2 cái Warning. Còn đối với c thì không có gì. Điều thú vị hơn là nếu trong đoạn mã cpp ta thay đổi kiểu trả về của 'main' từ 'int' sang 'float' thì lại dính error.
Đây là lí do:
- Trong C, nó chỉ yêu cầu tồn tại một hàm tên 'main', vậy là đủ, nó không quan tâm đến chuyện tham số đầu vào hay kết quả trả về.
- Trong C++, nó khuyến cáo sử dụng 2 mẫu:
int main(int argc, char** argv); // hoặc int main() //
Chà. Vậy lý do nào khiến C và C++ đưa ra 2 lựa chọn khác nhau thế nhỉ?
ReplyDelete