Khai báo hàm như thế này nghĩa là gì?

void foo(int,int) (int);

Phần bôi đậm trên nghĩa là gì vậy mọi người? Mình đoán là ngoại lệ phát ra sẽ là kiểu int không biết đúng không.

Trông có vẻ giống như con trỏ hàm trong C, nhưng nhìn hơi lạ. @nguyenchiemminhvu cho thêm một số đoạn code xung quanh hoặc cách sử dụng cái dòng này đi

void foo(int,int) (int);

btw: ngôn ngữ gì đây @nguyenchiemminhvu, phải C không?

Đúng là ngôn ngữ C đó anh @ltd, em thấy dạng này trong cái clockwise/spiral rule bài hôm bữa anh post ấy. Em không biết tên của kiểu khai báo này là gì nên cũng không biết search với từ khóa nào.

Cái em đoán là em bị nhớ nhầm qua phần exception của C++ rồi, đây là 1 ví dụ về khai báo exception:

double myfunction (char param) throw (int);
1 Like

Ở link trên là phải có pointer chứ @nguyenchiemminhvu

Có lẽ nó phải là như thế này (1)

void (*foo(int,int)) (int);

foo là một hàm nhận vào int, int và trả về một con trỏ cho một hàm nhận vào int và trả về void


Còn như thế này thì giống go hơn (2)

void foo(int,int) (int);

P/S: Nhưng cấu trúc như hàm foo ở ví dụ (1) quá phức tạp, Đạt chưa gặp trong thực tế bao giờ :smile:

2 Likes

Hình như thiếu dấu * hay sao ý, như vậy cũng không phải con trỏ hàm

Cái này để khai báo hàm với nhiều tham số ạ. Cuối cái dấu ngoặc phải có dấu 3 chấm. Còn 1 cách khai báo hàm vs nhiều tham số nữa là dùng initializer_list ạ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?