2010-10-04 38 views
8

sự khác biệt giữa hai tờ khai sau là gì:tờ khai nhập nhằng

1. int foo(int); 
2. int foo(int()); 

Tôi không chắc chắn nếu cả hai tờ khai là tương đương. Điều gì làm cho (2) khác với (1)?

+2

Check-out http: //cdecl.org ... này sẽ rất hữu ích ... – liaK

Trả lời

13

int foo(int); là tuyên bố của một hàm lấy một số nguyên như là một đối số và trả về một số nguyên cũng

int foo(int()); tuyên bố một chức năng dùng như một cuộc tranh cãi "một con trỏ tới một hàm trả về int và lấy {không có đối số [trong C++] và số lượng đối số không xác định [trong C]} "và trả về một số nguyên.

(2) tương đương với int foo(int (*pf)())int foo(int f())

+1

Lấy không có đối số? Tôi tin rằng bạn có nghĩa là tham gia không xác định nhưng không phải là đối số variadic. '(void)' là cách để xác định "không có đối số". –

+2

@R Tôi tin rằng đó là C chỉ, không C++ – Tom

+0

@R: Xin lỗi tôi đã bỏ lỡ điều đó. Đã thêm vào bài đăng của tôi. –

Các vấn đề liên quan