Can I define a function inside a C structure?

c, function, structure

Solution

No, you cannot define a function within a `struct` in C.

You can have a function pointer in a `struct` though but having a function pointer is very different from a member function in C++, namely there is no implicit `this` pointer to the containing `struct` instance.

Contrived example (online 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;
}

Problem

I am trying to convert some C++ code to C, and I am facing some problems. How can I define a function inside a structure? Like this: ``` typedef struct { double x, y, z; struct Point *next; struct Point *prev; void act() {sth. to do here}; } Point; ```

Original source

Related problems