私はこのCコードを持っている:Cで構造体の初期化に失敗した場合はNULLを返しますか?
#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ではなく構造返すことは有効ではないということになりますので、どのように私はこのケース(無構造体へのポインタ)で構造の初期化が失敗したことを表現していますか?
:
そのように、あなたは失敗、のようなものを示すことができます。これにより、システムは行動を起こして再試行することができます。 –