2 Pluspunkte 0 Minuspunkte

Ich habe eine Struktur und möchte eine Funktion hinzufügen.

#include <stdio.h>

struct Test
{
    int id;
    void testFunc(int v) {
        this.id = v;
        printf("%d", this.id);
    }
};

int main()
{   
    struct Test test;
    test.id = 13;

    test.testFunc();       
}

Beim kompilieren steht dann dieser Fehler:

main.c:7:21: error: expected ':', ',', ';', '}' or '__attribute__' before '{' token
     void testFunc(int v) {
                          ^
main.c: In function 'main':
main.c:19:9: error: 'struct Test' has no member named 'testFunc'
     test.testFunc();
         ^

Wie kann ich eine Funktion in einem struct definieren?

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

In C ist es nicht möglich Funktionen innerhalb einer Struktur zu definieren. Du kannst die Funktion ausserhalb der Struktur definieren und einen Zeiger verwenden um darauf zu verweisen.

#include <stdio.h>

struct Test
{
    int id;
    void (*testFunc)(struct Test *t, int v);
};

void testFunc(struct Test *t, int v) {
    t->id = v;
    printf("%d", t->id);
}

int main()
{
    struct Test test;
    test.id = 13;
    test.testFunc = testFunc;

    test.testFunc(&test, 42);

    return 0;
}

von (776 Punkte)