私はこの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;
}
構造体と、その構造体を初期化する関数があります。私がやろうとしているのは、その関数でエラーが発生した場合に NULL を返すことです。
gcc エラー メッセージ:
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
構造体の代わりに NULL を返すことは有効ではないようですが、この場合 (構造体ポインターがない) 構造体の初期化の失敗をどのように表現すればよいでしょうか?