Fermer2
PpHdLe 14/02/2005 à 17:26
J'ai decouvert une nouvelle possibilite des extensions GNU : Construction d'une fonction de callback a la volee parce que ca fait chier de le faire autrement !
#include <stdlib.h>

void f(int *tab, int n, int c) {
  qsort (tab, n, sizeof(n), ({int cmp (int *a, int *b) { return *a < *b*c;}; &cmp;}));
}

int main () {
  int tab[] = {4,2,5,6,7,-25,59,75};
  int i;

  const int n = sizeof(tab)/sizeof(tab[0]);
  f(tab, n, -1);
  void g() {
    for (i = 0 ; i < n ; i ++)
      printf ("%d ", tab[i]);
    putchar ('\n');
  }
  g ();
  f(tab, sizeof(tab)/sizeof(tab[0]), 1);
  g ();
  return 0;
}


Je vous laisse imaginer ce que ca donne lorsqu'on mixe ca avec des __attribute__((cleanup)) ou __attribute__((destructor)). smile