Böyle bir şey C de mümkün mü?C, fonksiyon göstergeleri ile argümanlar önceden ayarlanmış
#include <stdio.h>
void print_str(char *str) {
printf(str);
}
int main() {
void (*f_ptr)() = print_str,"hello world";
f_ptr();
}
//see "hello world" on stdout
Özetle, bağımsız değişkenleri "saklayan" bir işlev işaretçisine sahip olmak isterim. Asıl nokta, fonksiyon göstergesinin, orijinal verilere bir referansa gerek kalmaksızın daha sonra kullanılabileceğidir.
Ben çifte bir işlev işaretçisi ve bir argüman referansı
struct f_ptr {
void (*f)();
void *data;
}
void exec_f_ptr(f_ptr *data) {
data->f(data->data):
}
böyle bir şey kullanabilirsiniz ama sadece içeride bağımsız değişkenle bir işlev işaretçisi çağırarak kadar zarif olmaz.
Yanlış bir dil kullanıyorsunuz. İkinci çözüm genellikle C.'de kullanılan şeydir. Farklı işaretlerle işlev göstergelerini alamayız ve hepsini aynı kod aracılığıyla çağırmaya çalışamayız. C++ daha fazla imkanlara sahiptir ve bunun için daha uygundur, fakat dinamik sınıflandırma ve birinci sınıf nesneler olarak işlev gösteren komut dosyaları, genellikle bu tür kodlar için en uygun olanlardır. – stinky472
Bir makro # #define DO_FUN (d) (d) -> f ((d) -> veri) 'yi tanımlayabilirsiniz, sonra argüman ile bir işaretçiyi çağırmak için bir satırınızı 'DO_FUN (veri); – maxwellb
Oh, exec işleviyle yaptığınız şey bu, şimdi görüyorum? Bu durumda herkes haklı, bu sahip olduğun en iyisi. – maxwellb