Có thể sử dụng các biểu thức hàm trong C? Ví dụ, tôi có đoạn mã sau mã (bên trong main
chức năng):C có hỗ trợ các biểu thức hàm không?
void print_line(char *data) {
printf("%s\n", data);
}
// print all elements in my_list
list_foreach(&my_list, print_line);
Tôi muốn làm điều gì đó giống như thay vì điều này:
list_foreach(&my_list, void (char *data) {
printf("%s\n", data);
});
là bất cứ điều gì như thế có thể trong C?
Đừng làm cho tôi sai, nhưng đó là lý do tại sao tôi yêu C++, nó mang lại cho bạn điều này và nhiều hơn nữa với giá rẻ hơn C! – AraK
@AraK: Đối với giá rẻ hơn C? "Rẻ hơn" có nghĩa là gì ở đây? Cách C++ có thể chậm hơn, phải không? – thejh
Rẻ hơn ở đây có nghĩa là trình biên dịch có thể thu gọn sự trừu tượng để có được hiệu suất tối đa. So sánh ví dụ việc sử dụng một functor (hoặc lambda), với việc sử dụng các con trỏ hàm. Việc giới thiệu bí danh không giúp ích gì nhiều trong việc tạo ra mã tốt nhất. – AraK