首页 > 解决方案 > NULL 检查多个文件指针的最佳/最快方法?

问题描述

我想知道 NULL 检查多个文件指针并排除“坏”(NULL)指针的最佳和/或最快方法是什么?这可以通过switch语句来实现吗?

我的“正常/基本”方法是:

FILE *fp1, *fp2, *fp3;

fp1 = fopen(foo, bar);
/* etc.. */

if (!fp1) 
    /* do something */
    return 1;
if (!fp2) 
    return 2;

... 

..但是这种方法似乎太长了,特别是如果要检查的指针太多。有没有技巧可以更方便地做到这一点?

换句话说(或代码),是这样的:

if (!fp1 || !fp2 || !fp3) {
    /* one of the pointers is NULL, let's *somehow* check which one it is */
} else {
    /* everything OK */
} 

我是初学者,我正在考虑使用该switch语句。更具体地说,我正在考虑(再次)以某种方式将文件指针与 NULL 进行比较,但我不知道如何编写这样的代码,因为语句中使用的表达式switch必须是整数,但另一方面手,不NULL等于0?

我很抱歉,因为这似乎是一个微不足道的问题,但我在 null 检查这样的多个指针时找不到任何东西。

提前致谢!

标签: cif-statementswitch-statementnull-check

解决方案


没有最好的方法来做到这一点。具有正确优化的编译器是唯一的解决方案。编译代码时 switch 或 if 是相同的东西。

如果要打开的文件数量很大,只有一个提示,对于可读的代码使用数组和循环循环是一件好事。但是,如果您的目标是性能,那么循环并不是最好的方法,特别是如果要检查的元素数量很少。


推荐阅读