30/09/2018, 16:30

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.

Nguyễn Minh Dũng viết 18:37 ngày 30/09/2018

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?

... viết 18:31 ngày 30/09/2018

Đú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.

Hiểu được bài viết này sẽ giúp bạn đỡ nhức đầu khi lập trình C http://c-faq.com/decl/spiral.anderson.html P/S: Và có thể giúp bạn pass nhiều C interview hơn smile

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);
Nguyễn Minh Dũng viết 18:41 ngày 30/09/2018

Ở 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ờ

Nguyễn Hữu Điền viết 18:45 ngày 30/09/2018

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

Ninh Nhâm viết 18:39 ngày 30/09/2018

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 ạ

Bài liên quan
0