c - 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 检查这样的多个指针时找不到任何东西。
提前致谢!
解决方案
没有最好的方法来做到这一点。具有正确优化的编译器是唯一的解决方案。编译代码时 switch 或 if 是相同的东西。
如果要打开的文件数量很大,只有一个提示,对于可读的代码使用数组和循环循环是一件好事。但是,如果您的目标是性能,那么循环并不是最好的方法,特别是如果要检查的元素数量很少。
推荐阅读
- c# - 对唯一整数数组进行分组
- var - 使用 predict 预测 VECM
- python - 我应该如何在 python 中使用闭包创建属性?
- c# - 如何从数据库重新加载相同的值
- r - 在 r 的散点图中使用函数聚合标记点
- amazon-athena - 如何将带 NULL 值的引用 CSV 读入 Amazon Athena
- c++ - 与返回类型无关的 value_or 的替代方案
- algorithm - 以中间元素为中心的快速排序
- batch-processing - QGIS SCP 中 sentinel-2 的特殊波段名称
- python-2.7 - 如何使用 CPLEX Python API 获得最优差距?