5496Fermer5498
TronLe 15/06/2016 à 11:57
Comment faire une indirection d'appel en C ?

Normalement :

int return_value_by_ptr(int** receiver);
int* receiver = NULL;
return_value_by_ptr(&receiver);

Ce que je veux :

#define MACRO_RETURN_VALUE() int* ptr && return_value_by_ptr(&(int*) { &prt })
int* receiver = MACRO_RETURN_VALUE();

En gros je m'en fout du retour de 'return_value_by_ptr' (code d'erreur inutile) mais je veux pouvoir retourner le contenu de 'ptr'.

Si ce contenu == NULL, c'est déjà une erreur, pas besoin de tester l'autre.

Ça semble assez étrange à prime abord, mais c'est super utile en fait.

C'est pour ré-écrire les kernel Linux en mode nostub.

Carrément.

Comme ça.

Je suis un fou.