經過多年使用 C#、Java 等高級語言后,我重新發現了 C,而且我正在使用類似泛型的函式,我正在嘗試撰寫類似函子等的東西。
我寫了這樣的東西:
#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)函式作為引數傳遞。
uj5u.com熱心網友回復:
當然,函式用于 while 回圈條件(無論是否使用while或for)。
WidgetIterator wi = ...;
Widget w;
while ( WidgetIterator_next(wi, &w) ) {
process_widget(w);
}
不過,不是因為像你給出的例子那樣愚蠢。(x < 5) ? 1 : 0是一種奇怪的寫作方式x < 5,使用函式只是x < 5簡單地掩蓋了事情。這不好。這與良好的編程實踐背道而馳。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/429325.html
