NULL zurückgeben, wenn Struktur-Initialisierung fehlgeschlagen in C?

Habe ich diesen C-code :

#include<stdio.h>

typedef struct {
    int foo;
} MyStruct;

MyStruct init_mystruct(void);

int main(void) {

    MyStruct mystruct   = init_mystruct();

    if( mystruct == NULL ) {
        /* error handler */
    }

    return(0);
}

MyStruct init_mystruct(void) {

    MyStruct mystruct;
    int is_ok   = 1;

    /*
     * do something ...
     */

    /* everything is OK */
    if( is_ok )
        return mystruct;
    /* something went wrong */
    else
        return NULL;
}

Es hat eine Struktur und eine Funktion zur Initialisierung der Struktur. Was ich versuche zu tun, ist NULL zurück, wenn es eine Störung in der Funktion.

Den gcc-Fehlermeldung :

code.c: In function main’:
code.c:13: error: invalid operands to binary == (have MyStruct and void *’)
code.c: In function init_mystruct’:
code.c:34: error: incompatible types when returning type void *’ but MyStruct was expected

Sieht es aus, dass die Rückgabe von NULL statt einer Struktur nicht gültig ist, also wie setze ich das Versagen der Strukturen die Initialisierung in diesem Fall (keine Struktur-Zeiger)?

InformationsquelleAutor | 2012-05-18
Schreibe einen Kommentar