質問です。
セーブをする関数を作ろうと思い、以下のコードを書きました。
void Save();
typedef struct{
int Scene1;
int Scene2;
int Scene3;
int Scene4;
}SaveData_t;
void Save(void){
SaveData_t Data = { 200, 100, 1000, 1000 };
FILE *fp = fopen( "セーブデータ.dat", "wb" );
if( fp == NULL ){//エラーが起きたらNULLを返す
return 0;
}
fwrite( &Data, sizeof(Data), 1, fp );
fclose( fp );//ファイルを閉じる
}
しかしエラーが出ました。その内容は、
「'Save' : 関数は 'void' 型として宣言されていますが、値を返しました。」
というものでした。
質問1:なぜ return 0; などと書いてはいないのにSave()関数は値を返したのでしょうか。
この後、Save()の部分を
int Save();
int Save(void){
省略
}
とすれば問題なく動いたのですが、試しに
int Save();
int Save(void){
省略
return 0;
}
と書いても問題なく動きました。
質問2: return 0;を書いた場合と書かなかった場合どちらも問題なく動いたのはなぜでしょうか。