| Voir le sujet précédent :: Voir le sujet suivant |
| Auteur |
Message |
ts-7389
Inscrit le: 19 Nov 2007 Messages: 2
|
Posté le: Lun Nov 19, 2007 10:28 pm |
Sujet du message: Programmation en C sous linux
|
|
Bonjour à tous.
Voilà je me suis mis à programmer en C sous linux, mais cependant j'ai un problème avec void main().
Il a pas l'air d'aimer, et préfère int main() à la place.
C'est pas normal, comment faire?
Voici mon programme de test qui se nomme "z":
| Code: |
#include <stdio.h>
void main()
{
printf("Génial ce site");
getchar();
} |
Et la compilation me donne:
z.c: In function «main":
z.c:5: attention : return type of «main" is not «int"
Bon par la suite ça marche quand même, mais ça n'est pas normal d'avoir ce signalement, alors qu'avec int je n'ai rien. |
|
| Revenir en haut |
|
 |
Celelibi

Inscrit le: 29 Mar 2006 Messages: 770
|
Posté le: Mar Nov 20, 2007 6:43 am |
Sujet du message:
|
|
Avec quel compilateur compile-tu ? Avec quels options ?
Il me semble que la norme C-ansi indique que le type de retour de la fonction main devrait être int.
Cet entier correspond au code de retour du programme. Typiquement sous linux, 0 indique que tout s'est bien passé, autre chose indique une erreur.
Pour faire plus propre tu peux utiliser la constante EXIT_SUCCESS définie dans stdlib.h, elle contient le code de retour indiquant que le programme s'est bien terminé indépendamment du système (sous windows ça vaudra 1).
Une bonne pratique est de déclarer ta fonction main comme ça (quand t'utilise pas argc ni argv) : int main (void). Le void dit explicitement qu'il n'y a aucun paramètre. _________________ Il y a un boulet qui sommeille en chacun de nous. (enfin, surtout vous...) |
|
| Revenir en haut |
|
 |
ts-7389
Inscrit le: 19 Nov 2007 Messages: 2
|
Posté le: Mar Nov 20, 2007 7:05 pm |
Sujet du message:
|
|
Je compile avec gcc, en tapant le source dans gedit.
Donc le seul moyen c'est le int main(void) ?? |
|
| Revenir en haut |
|
 |
Hindifarai
Inscrit le: 12 Sep 2005 Messages: 5
|
Posté le: Mar Nov 20, 2007 9:35 pm |
Sujet du message:
|
|
GCC ne renvoie pas d'erreurs sur void main mais un warning. Il te renvoie en fait un avertissement sur le fait que ton code n'est pas conforme à la norme.
Il peut être nécessaire d'utiliser void main mais généralement le programmeur sait pourquoi il le fait et ça n'est pas ton cas vu le code et ta question.
Si tu veux approfondir la question le lien http://users.aber.ac.uk/auj/voidmain.shtml devrait t'intéresser et te convaincre  |
|
| Revenir en haut |
|
 |
|