Không, bạn không thể định nghĩa một hàm trong một struct
trong C.
Bạn có thể có một con trỏ hàm trong một struct
dù nhưng có một con trỏ hàm là rất khác nhau từ một hàm thành viên trong C++, cụ thể là không có con trỏ this
tiềm ẩn nào chứa cá thể struct
chứa.
giả tạo ví dụ (trực tuyến bản demo http://ideone.com/kyHlQ):
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct point
{
int x;
int y;
void (*print)(const struct point*);
};
void print_x(const struct point* p)
{
printf("x=%d\n", p->x);
}
void print_y(const struct point* p)
{
printf("y=%d\n", p->y);
}
int main(void)
{
struct point p1 = { 2, 4, print_x };
struct point p2 = { 7, 1, print_y };
p1.print(&p1);
p2.print(&p2);
return 0;
}