Sauf que definir le prototype d'une fonction (type des arguments et du retour) ca marche pour les fonctions que tu definis toi meme, sauf une, main. C'est d'ailleurs pas la seule difference: pour les fonctions que tu definis toi meme, sauf main, tu definis aussi le nom de ta fonction.
Pourquoi c'est different pour main: parce que le systeme, pour executer ton programme, il a besoin de trouver la fonction initiale de ton programme, le "point d'entrée" pour le demarrer (je simplifie un petit peu en fait). Pur la trouver, le mecanisme qui est utilise repose sur le nom de cette fonction (donc fixé, main) et son prototype parce qu'avec un nom fixé, on ne peut avoir qu'un seul prototype en C, et le prototype est alors: int main( int, char**, char**); qu'on trouve le plus souvent ecrit sous la forme int main( int argc, char *argv[ ], char *envp[ ]); [ou seulement les 2 premiers parametres en Iso C]
Comme dans ton programme, tu ne fais jamais appel a main en lui passant des arguments (c'est le systeme qui le fait), le nb d'arguments declares pour main (0, 1, 2 ou 3) dans ton programme n'est pas important, tant que ca reste homogene avec le prototype donné. De toute facon, le systeme passera les arguments a main, et ta declaration sert plutot a savoir visibilite ces arguments auront dans ton programme.
> Pourtant ma fonction main n'a pas de INT devnant ou autre chose
Et c'est une erreur. ca doit etre int, et pas autre chose.
> dans mon cas, il ne faut pas de retour
Non! Dans ton cas, tu n'as rien a retourner de special, mais ca ne t'empeche pas de faire un return 0; a la fin de ton programme afin d'etre coherent avec le prototype.
En C++, afin de ne pas etre embete avec cette histoire, si tu ne met pas de return qquechose; a ta fonction main, un return 0; est ajoute automatiquement par le compilateur, et le pb est reglé.
A+,
Message édité par gilou le 04-07-2004 à 08:52:01
---------------
There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! --