Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Câu đố gọi hàm C/C++: Hàm không tham số

Giới thiệu

Khác biệt giữa C và C++ khi gọi hàm được khai báo không tham số.

Code kiểm tra

void method() { /* Print statement */ }

int main() {
    method();
    method(2);  // Truyền đối số cho hàm không tham số
}

Kết quả

Ngôn ngữKết quả
C++Lỗi compile: error: too many arguments to function 'void method()'
CChạy bình thường (không lỗi)

Nguyên nhân

  • C++: void method() nghĩa là hàm không nhận bất kỳ tham số nào (tương đương void method(void)). Truyền đối số → lỗi kiểu.
  • C: void method() nghĩa là hàm có thể nhận số lượng tham số bất kỳ (kiểu hàm cũ K&R). Trình biên dịch không kiểm tra số lượng đối số.

Best Practice

Trong C, luôn khai báo rõ ràng:

void method(void) { ... }  // Không tham số
void method(int x) { ... } // Có tham số

Điều này làm code tương thích cả C và C++, tránh lỗi ngầm.