Retourner NULL si échec de l'initialisation de la structure en C?

J'ai ce code C :

#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;
}

Il a une structure et une fonction pour initialiser cette structure. Ce que j'essaie de faire est de retourner la valeur NULL si il y a une défaillance dans cette fonction.

La gcc message d'erreur :

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

Il semble que de retourner la valeur NULL au lieu d'une structure n'est pas valide, alors comment puis-je exprimer l'insuffisance de structures d'initialisation dans ce cas (pas de pointeur de structure)?

OriginalL'auteur | 2012-05-18