エラー処理

C言語のエラー処理
の記事を見て
長くなるのでこっちへ


なんでそんなにmain関数に戻りたいのかわからない…。
俺がおかしいのか?


errno.hはman見ておくと良いよ


デーモンに限った話ならメモリー取れない時点で処理できないの確定なので
exit(0);まぁlinuxならerror();で良いとおもう

メインに戻りたい理由があるならGOTOだとおもうけど
カーネルくらいじゃないのかな?
個人的にはマクロにしておいて外部の人に出すときにはプリプロセッサで処理しますかね。
gcc依存部分が含まれていますので違うコンパイラの人は気を付けてね。

#include <stdio.h> 
#include <stdlib.h>
#include <errno.h>
#define MALLOC_AD(size) \
({                                              \
        void *p ;                               \
        p = malloc(size);                       \
        if(p == NULL){error();}         \
        p;                              \
})


#define MALLOC_AD_GO(size,GOTO_LABEL) \
({                                              \
        void *p ;                               \
        p = malloc(size);                       \
        if(p == NULL)goto GOTO_LABEL;           \
        p;                              \
})


int hoge(void) {
        char* list1;
        char* list2;
        int returnCode = 0;

        list1 = MALLOC_AD(sizeof(char)*10);
        list2 = MALLOC_AD(sizeof(char)*100000000000000000000000);

        // なんかすごい処理をする
        printf("pointer num =%p \n",list1);
        printf("pointer num =%p \n",list2);

        free(list1);
        free(list2);
        return 0;
}