在 for 循环中充当条件 - 有人在 C 中这样写吗?

Function as condition in for loop - does anyone write like this in C?

在使用 C# 等高级语言多年后,我重新发现了 C,Java 我正在使用类似泛型的函数,我正在尝试编写类似仿函数等的东西。

我写了这样的东西:

#include <stdio.h>

static int test(int x){
    return (x < 5) ? 1 : 0;
}

int main()
{
    for (int i = 0; test(i); i++){
        printf("i = %d\n", i);
    }
    return 0;
}

所以它有效。问题是:有人用C写过这样的吗?

观点免费版:专业的C程序员(操作系统、数据库、标准库源代码)会出现这样的写法吗

这是否被认为是不好的做法、不流行或由于某些原因不是很有用?

上面的例子很愚蠢,但实际上我在搞乱 C 中的面向对象编程,我想在类似泛型的函数中使用类似这样的东西,并将 test(some_struct_t) 函数作为参数传递。

当然是在while循环条件下使用函数(不管是while还是for

WidgetIterator wi = ...;
Widget w;
while ( WidgetIterator_next(wi, &w) ) {
   process_widget(w);
}

但不是因为像您举的例子那样愚蠢的事情。 (x < 5) ? 1 : 0x < 5 的一种奇怪的写法,并且只为 x < 5 使用一个函数只会使事情变得模糊。这不好。它与良好的编程习惯背道而驰。