c - NULL 检查多个文件指针的最佳/最快方法?

标签 c if-statement switch-statement null-check

我想知道对多个文件指针进行 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 吗?

我很抱歉,因为这似乎是一个微不足道的问题,但我找不到像这样的空检查多个指针的任何内容。

提前致谢!

最佳答案

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

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

关于c - NULL 检查多个文件指针的最佳/最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59429251/

相关文章:

c - 在循环中打开文件时如何避免段错误?

java - Java猜数程序问题

C# Switch If 条件来扩展 switch case

objective-c - 比较 switch 语句中的数字

java - 开关盒顺序会影响速度吗?

c - fgets 是做什么的?

c++ - 数字过高会导致段错误

java - 使用 SDL 将现有的 Lunar Lander 程序从 C 转换到 Android 手机

java - = 和 == If 语句 Java 的区别

c++ - 有什么理由使用 switch 语句而不是 if 和 elseif 字符串吗?