Bonjour,
Je dispose d'une fonction de profil void quit(void) que j'appelle lors de la fermeture du programme, c'est à dire que je fais atexit(quit).
La fonction quit ne disposant pas de paramètres, je suis tenté d'écrire atexit(quit()) mais le compilateur n'accepte pas. Comment ça se fait ?
Inversement, ma fonction quit contient un appel à SDL_Quit(), or je ne peux pas dans ce cas simplement écrire SDL_Quit, sans les parenthèses. Je préfère écrire avec parenthèse mais c'était juste pour tester et je tombe sur un paradoxe.
Code :
- int main(int argc, char *argv[])
- {
- (...)
- atexit(quit); /*impossible de faire atexit(quit())
-
- (...)
- return EXIT_SUCCESS;
- }
|
Code :
- void quit(void)
- {
- SDL_Quit(); /*impossible de faire SDL_Quit */
- }
|
Lorsque je tente de faire atexit(quit()) j'obtiens cette erreur:
Code :
- make
- gcc -g -Wno-unused-parameter -Wall -ansi -pedantic `sdl-config --cflags --libs` -c src/init.c
- gcc -g -Wno-unused-parameter -Wall -ansi -pedantic `sdl-config --cflags --libs` -c src/input.c
- gcc -g -Wno-unused-parameter -Wall -ansi -pedantic `sdl-config --cflags --libs` -c src/main.c
- src/main.c: In function ‘main’:
- src/main.c:11: erreur: utilisation invalide d'expression void
- make: *** [main.o] Erreur 1
|
et lorsque je tente de faire SDL_Quit pour voir si c'est usuel de ne pas mettre de parenthèse s'il n'y a pas d'argument, j'obtiens :
Code :
- make
- gcc -g -Wno-unused-parameter -Wall -ansi -pedantic `sdl-config --cflags --libs` -c src/init.c
- src/init.c: In function ‘quit’:
- src/init.c:27: attention : déclaration sasn effet
|
Merci d'avance pour vos explications.
Message édité par atmakefka le 12-04-2009 à 13:09:35