Articles of pointers de function

Lambda C ++ com capturas como um ponteiro de function

Eu estava jogando com C ++ lambdas e sua conversão implícita para pointers de function. Meu exemplo inicial foi usá-los como retorno de chamada para a function ftw. Isso funciona como esperado. #include #include using namespace std; int main() { auto callback = [](const char *fpath, const struct stat *sb, int typeflag) -> int { […]

Qual é o substituto mais próximo de um ponteiro de function em Java?

Eu tenho um método que tem cerca de dez linhas de código. Eu quero criar mais methods que fazem exatamente a mesma coisa, exceto por um pequeno cálculo que vai mudar uma linha de código. Este é um aplicativo perfeito para passar um ponteiro de function para replace essa linha, mas o Java não possui […]

Casting um ponteiro de function para outro tipo

Digamos que eu tenha uma function que aceita um ponteiro de function void (*)(void*) para uso como retorno de chamada: void do_stuff(void (*callback_fp)(void*), void* callback_arg); Agora, se eu tiver uma function como esta: void my_callback_function(struct my_struct* arg); Posso fazer isso com segurança? do_stuff((void (*)(void*)) &my_callback_function, NULL); Eu olhei para essa questão e observei alguns padrões […]

Passando lambda como ponteiro de function

É possível passar uma function lambda como um ponteiro de function? Se assim for, devo estar fazendo algo incorretamente porque estou recebendo um erro de compilation. Considere o seguinte exemplo using DecisionFn = bool(*)(); class Decide { public: Decide(DecisionFn dec) : _dec{dec} {} private: DecisionFn _dec; }; int main() { int x = 5; Decide […]

Por que as definições de ponteiro de function funcionam com qualquer número de e comercial ‘&’ ou asteriscos ‘*’?

Por que o seguinte trabalho? void foo() { cout << "Foo to you too!\n"; }; int main() { void (*p1_foo)() = foo; void (*p2_foo)() = *foo; void (*p3_foo)() = &foo; void (*p4_foo)() = *&foo; void (*p5_foo)() = &*foo; void (*p6_foo)() = **foo; void (*p7_foo)() = **********************foo; (*p1_foo)(); (*p2_foo)(); (*p3_foo)(); (*p4_foo)(); (*p5_foo)(); (*p6_foo)(); (*p7_foo)(); }

Como funcionam os pointers em C?

Eu tive alguma experiência ultimamente com pointers de function em C. Então, seguindo a tradição de responder suas próprias perguntas, decidi fazer um pequeno resumo das coisas básicas, para aqueles que precisam de um mergulho rápido no assunto.