Articles of pointers de function

estático vs externo “C” / “C ++”

Qual é a diferença entre uma function de membro estático e uma function de binding externa “C”? Por exemplo, ao usar “makecontext” em C ++, preciso passar um ponteiro para a function. O Google recomenda o uso do link “C” externo para ele, porque “makecontext” é C. Mas descobri que o uso de obras estáticas […]

Ponteiros de function C ++ / C que retornam void *

Eu estou tentando chamar uma function que leva um argumento, void(*)(void*, int, const char*) , mas não consigo descobrir como passar esses argumentos para a function. Exemplo: void ptr(int); int function(int, int, void(*)(int)); Eu estou tentando chamar a function assim: function(20, 20, ptr(20)); Isso é possível?

Usando um mapa STL de pointers de function

Eu desenvolvi um mecanismo de script que tem muitas funções internas, então, para chamar qualquer function, meu código simplesmente entra em um if .. else if .. else if wall verificar o nome, mas eu gostaria de desenvolver uma solução mais eficiente. Devo usar um hashmap com strings como chaves e pointers como valores? Como […]

Ponteiro de function C ++ (membro de class) para function de membro não estático

class Foo { public: Foo() { do_something = &Foo::func_x; } int (Foo::*do_something)(int); // function pointer to class member function void setFunc(bool e) { do_something = e ? &Foo::func_x : &Foo::func_y; } private: int func_x(int m) { return m *= 5; } int func_y(int n) { return n *= 6; } }; int main() { Foo […]

Como obter o nome da function do ponteiro da function em C?

Como obter o nome da function do ponteiro da function em C? Edit: O caso real é: Eu estou escrevendo um módulo do kernel do Linux e estou chamando funções do kernel. Algumas dessas funções são pointers e quero inspecionar o código dessa function na origem do kernel. Mas eu não sei qual function está […]

Como chamar através de um ponteiro de function de membro?

Eu estou tentando fazer alguns testes com o ponteiro de function de membro. O que está errado neste código? O bigCat.*pcat(); declaração não compila. class cat { public: void walk() { printf(“cat is walking \n”); } }; int main(){ cat bigCat; void (cat::*pcat)(); pcat = &cat::walk; bigCat.*pcat(); }

Como formatar um ponteiro de function?

Existe alguma maneira de imprimir um ponteiro para uma function em ANSI C? Claro que isso significa que você tem que lançar o ponteiro de function para anular o ponteiro, mas parece que não é possível? #include int main() { int (*funcptr)() = main; printf(“%p\n”, (void* )funcptr); printf(“%p\n”, (void* )main); return 0; } $ gcc […]

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 […]