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