次の2つのアプローチのいずれかに他のアプローチよりも利点がありますか?
ここでは、最初にテストされ、fopen
成功するかどうか、次にすべての変数宣言が行われるかどうかがテストされ、実行される必要がないため、実行されないことが確認されます。
void func(void) {
FILE *fd;
if ((fd = fopen("blafoo", "+r")) == NULL ) {
fprintf(stderr, "fopen() failed\n");
exit(EXIT_FAILURE);
}
int a, b, c;
float d, e, f;
/* variable declarations */
/* remaining code */
}
これは正反対です。fopen
失敗した場合でも、すべての変数宣言が行われます
void func(void) {
FILE *fd;
int a, b, c;
float d, e, f;
/* variable declarations */
if ((fd = fopen("blafoo", "+r")) == NULL ) {
fprintf(stderr, "fopen() failed\n");
exit(EXIT_FAILURE);
}
/* remaining code */
}
2番目のアプローチは、失敗したときに追加のコストを生み出しますか?fopen
あなたの考えを聞いてみたいです!