Structures C et fonctions

Hmm… j’avais pris l’habitude, en C++, de passer des fonctions dans des structures. C’était bien pratique pour initialiser les structures par exemple.
Est-ce qu’on peut passer une fonction dans une structure en C, du genre

struct ma_struct{
   char * data;
   void init();
};

si oui, comment, parceque ce genre de code ne compile pas en C.
Si non, existe-t-il un autre moyen de passer du code via la structure (autre que de devoir faire une fonction externe avec la structure en paramêtre)?

c’est pas trés clair pour moi ta question (mais bon, j’ai pas le nez dans le C, alors).
Une structure n’est pas un objet, et n’appellera pas de constructeur surchargeable à l’init.
Mais si tu veux stocker une fonction dans ta struct, tu peux toujours y stocker l’adresse de ta fonction en (void *), mais, et d’un, tu n’es pas sûr qu’elle n’ait pas été relogée au moment ou tu y fais appel, et de deux, si ta func est censée avoir des arguments, tu en baves pour les passer en respectant une syntaxe C ANSI (sans cast dans un type func).
Enfin de mêmoire :wink:

struct pouet {
  int a;
  void *callback;
  void *callbackWithArgument;
};

int func()
{
  return 42;
}

int funcWithArgs(int arg)
{
  return arg;
}

int main(void)
{
  int (*callback)(); /* Aucun argument */
  int (*callbackWithArgument)(int argument); /* Avec argument */
  pouet.callback = &func;
  pouet.callbackWithArgument = &funcWithArgs;
  callback = pouet.callback;
  callbackWithArguments = pouet.callbackWithArgument;
  if (0)
    return callback();
  else
    return callbackWithArguments(2*24);
}

Rien de compliqué pour passer des arguments.

A+,

Si tu veux un exemple plus concret, tu peux regarder mon chargeur de module présent dans edWeb ou MyBot, disponibles ici:

ed.zehome.com/?page=mybot

Merci, je vais tester tout ça. :slightly_smiling:

Et non en langage C les fonctions ne peuvent pas faire partie d’une structure. On ne peut mettre dans une structure que des variables, le fait de rattacher des fonctions à une structure vient du langage objet.