Question syntaxe à la con ...

Question syntaxe à la con ... - C - Programmation

Marsh Posté le 03-05-2008 à 19:09:07    

Salut à tous :hello:,

 

Une petite question concernant la syntaxe d'un fichier source en C.

 

Je viens d'installer l'IDE XCode sous Leopard (Mac), et il me fait chier avec des warnings partout quand je lui écrit :

 
Code :
  1. #include <stdio.h>
  2. main()
  3. {
  4.     printf("Hello, World!\n" );
  5. }
 

Pour lui, seule cette syntaxe est correcte :

Code :
  1. #include <stdio.h>
  2. int main (int argc, const char * argv[]) {
  3.     printf("Hello, World!\n" );
  4.     return 0;
  5. }
 

Vous en pensez quoi ? :D

 

Ca me parait bien compliqué pour un Hello World :o

 



Message édité par Leonidas Ier le 03-05-2008 à 19:09:45

---------------
Nespresso, what else ?
Reply

Marsh Posté le 03-05-2008 à 19:09:07   

Reply

Marsh Posté le 03-05-2008 à 19:19:53    

il a raison :o

 

enfin, gcc 4.x a raison.


Message édité par Joel F le 03-05-2008 à 19:20:11
Reply

Marsh Posté le 03-05-2008 à 19:23:51    

C'est strict quoi :D :D


---------------
Nespresso, what else ?
Reply

Marsh Posté le 03-05-2008 à 19:37:43    

Code :
  1. #include <stdio.h>
  2.  
  3. int main (void) {
  4.    printf("Hello, World!\n" );
  5.    return 0;
  6. }
 

j'ai viré les arguments de ton main...


Message édité par Profil supprimé le 03-05-2008 à 19:38:21
Reply

Marsh Posté le 03-05-2008 à 19:39:06    

int main(void)
ca fait bien 1880 ça :o
 
int main() hein :o

Reply

Marsh Posté le 03-05-2008 à 19:40:09    

Ca marche aussi :D
 
Reste le "return" qui me stresse :o
 
Je débute en C hein, mais bon, j'ai quelques autres notions :D
 
Ceci dit, j'ai rien trouvé sur le "void" dans mes cours que j'ai sous les yeux. C'est quoi très exactement ? ;)


---------------
Nespresso, what else ?
Reply

Marsh Posté le 03-05-2008 à 19:41:07    

Joel F a écrit :

int main(void)
ca fait bien 1880 ça :o
 
int main() hein :o


Ca marche aussi :love:
 
Et pour le return ? :o :D


---------------
Nespresso, what else ?
Reply

Marsh Posté le 03-05-2008 à 19:41:07    

void = absence de type
 
le return est tout à fait normal quoi. Ton main renvoie un int, donc tu return une valeur :o

Reply

Marsh Posté le 03-05-2008 à 19:42:12    

"void main()"
 
sinon ?

Reply

Marsh Posté le 03-05-2008 à 19:42:14    

Joel F a écrit :

void = absence de type
 
le return est tout à fait normal quoi. Ton main renvoie un int, donc tu return une valeur :o


Woké, c'est logique quelque part, mais tellement peu intuitif :D :D


---------------
Nespresso, what else ?
Reply

Marsh Posté le 03-05-2008 à 19:42:14   

Reply

Marsh Posté le 03-05-2008 à 19:43:32    


Line Location main.c:3: warning: return type of 'main' is not 'int'
 
:D


---------------
Nespresso, what else ?
Reply

Marsh Posté le 03-05-2008 à 19:47:00    

Leonidas Ier a écrit :


Woké, c'est logique quelque part, mais tellement peu intuitif :D :D

 

Il n'y pas que dans le main que tu retournes des résultats. mettons que tu aies une fonction qui prennes un entier et te retourne le caractère ASCII adapté, la valeur de retour sera un caractère.

 

char intToAscii (int num){
char resultat
bla bla
return resultat }

 

EDIT: Ok, bon bah t'es fixée

Message cité 1 fois
Message édité par Profil supprimé le 03-05-2008 à 19:48:31
Reply

Marsh Posté le 03-05-2008 à 20:14:09    


Yes yes carrément ;)


---------------
Nespresso, what else ?
Reply

Marsh Posté le 03-05-2008 à 23:08:19    

sinon int argc char*argv[] correspond en fait au nombre d'arguments et la valeur des arguments lorsque tu lances ton programme en ligne de commande :
$run PROGRAM arg1 arg2 ...

 

argc va renvoyer le nombre d'arguments
et argv[0] renvoie 'PROGRAM', argv[1] renvoie 'arg1' etc...

 

edit c'est comme les #?, #1, etc en programmation shell sous unix.

Message cité 1 fois
Message édité par Profil supprimé le 03-05-2008 à 23:13:17
Reply

Marsh Posté le 03-05-2008 à 23:12:21    

Ah dac, je savais pas du tout :D


---------------
Nespresso, what else ?
Reply

Marsh Posté le 03-05-2008 à 23:18:20    

Reply

Marsh Posté le 03-05-2008 à 23:27:41    


Bref, c'était l'idée :o

Reply

Marsh Posté le 03-05-2008 à 23:54:30    

dans le même esprit que pour les arguments, le return (EXIT_SUCCESS, EXIT_FAILURE) permet d'avoir un code de retour au niveau de l'environnement d'exécution lorsque le programme est terminé


Message édité par djobidjoba le 03-05-2008 à 23:59:25
Reply

Marsh Posté le 04-05-2008 à 11:32:48    

c'est du C et non du C++, le topic.
 

Code :
  1. #include <stdio.h>
  2. main()
  3. {
  4.     printf("Hello, World!\n" );
  5. }


ce code n'est pas faux, mais il n'aurait marché qu'avec un vieux vieux compilo, car il fait appel a diverses conventions plus trop a la mode (par exemple, la fonction (principale) n'est pas donnée avec un type de retour, donc implicitement, la fonction va retourner un int...), car fortement casse gueule. Il y a parfois une option sur les compilos modernes pour accepter ce type de code archaique (peut être -traditional sur gcc).
Pour avoir une idée de comment c'était aux tout débuts du C: http://www.lysator.liu.se/c/bwk-tutor.html (même pas besoin de #include <stdio.h> a l'époque)
A+,


Message édité par gilou le 04-05-2008 à 11:50:07

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 04-05-2008 à 11:51:12    

meme pas sur que les g++ récents acceptent void main() [:pingouino]

Reply

Marsh Posté le 04-05-2008 à 12:16:03    

Si on veut être complet sur les arguments d'un main en C:

Code :
  1. int main(int argc, char *argv[], char *env[])


A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 04-05-2008 à 14:24:47    

gilou a écrit :

Si on veut être complet sur les arguments d'un main en C:

Code :
  1. int main(int argc, char *argv[], char *env[])


A+,


Nope, celle-ci n'existe que sous certaines implémentations. [:dawa]
J'suis en train de me demander si elle est pas POSIX néanmoins, mais sûr qu'elle est pas ISO en tout cas.  

Reply

Marsh Posté le 04-05-2008 à 14:40:45    

POSIX oui, ISO nan

Reply

Marsh Posté le 04-05-2008 à 15:07:54    

Joel F a écrit :

meme pas sur que les g++ récents acceptent void main() [:pingouino]


C'est normal : http://www.research.att.com/~bs/bs_faq2.html#void-main
En C permettre une liste de paramètres vides est une feature obsolète (et ça risque de créer des surprises parce que la sémantique change suivant qu'on est à la déclaration ou à la définition de la fonction).
 

Elmoricq a écrit :


Nope, celle-ci n'existe que sous certaines implémentations. [:dawa]
J'suis en train de me demander si elle est pas POSIX néanmoins, mais sûr qu'elle est pas ISO en tout cas.  


Ils en parlent pour dire que c'est courant mais pas portable :
 

Citation :

J.5Common extensions
The following extensions are widely used in many systems, but are not portable to all implementations. The inclusion of any extension that may cause a strictly conforming program to become invalid renders an implementation nonconforming. Examples of such extensions are new keywords, extra library functions declared in standard headers, or predefined macros with names that do not begin with an underscore.
J.5.1 Environment arguments
In a hosted environment, the main function receives a third argument, char *envp[], that points to a null-terminated array of pointers to char, each of which points to a string that provides information about the environment for this execution of the program (5.1.2.2.1).


---------------
dap.developpez.com
Reply

Marsh Posté le 04-05-2008 à 17:40:23    

Elmoricq a écrit :


Nope, celle-ci n'existe que sous certaines implémentations. [:dawa]
J'suis en train de me demander si elle est pas POSIX néanmoins, mais sûr qu'elle est pas ISO en tout cas.  

Elle est ANSI au moins.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 04-05-2008 à 18:22:08    

Je me permets de revenir ici pour une autre question à la con :sol:
 
Quel est l'objectif du langage C ? [:petrus75]
Est-ce que c'est en partie un langage de "présentation" (comme l'HTML) ou pas du tout ?

Message cité 1 fois
Message édité par Leonidas Ier le 04-05-2008 à 18:22:52

---------------
Nespresso, what else ?
Reply

Marsh Posté le 04-05-2008 à 18:22:52    

....
 
c'est un langage de programmation ...

Reply

Marsh Posté le 04-05-2008 à 18:23:20    

Dac mais pour la présentation, il s'associe avec qui ? [:petrus75]


---------------
Nespresso, what else ?
Reply

Marsh Posté le 04-05-2008 à 18:28:03    

divers API de gestion d'affichage : ncurse, gtk, etc ...
 
toi tu as fait du PHP pendant 3h non ?

Reply

Marsh Posté le 04-05-2008 à 18:29:41    

Légèrement plus ma bonne dame [:petrus75]


---------------
Nespresso, what else ?
Reply

Marsh Posté le 04-05-2008 à 19:10:19    

bah, le C n'a rien avoir avec :E J'adore comment les "programmeurs web" pensent débarquer en C ou C++ ...
 
la "présentation" n'a pas de sens en soi. Donc en général tu utilises des API dépendantes du systeme. La plupart du temps les apps C sont en ligne de commande.

Reply

Marsh Posté le 04-05-2008 à 19:12:53    

Leonidas Ier a écrit :

Je me permets de revenir ici pour une autre question à la con :sol:
 
Quel est l'objectif du langage C ? [:petrus75]
Est-ce que c'est en partie un langage de "présentation" (comme l'HTML) ou pas du tout ?

Non, c'est un langage "d'application" (on peut écrire un browser HTML en C par exemple) entre autres.
A+,.
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 04-05-2008 à 19:12:55    

Moralité, le C c'est trop de la maÿrdasse [:petrus75] C'est de l'algo pur et simple, dingue [:totoz]
 
Le C++ donne quoi ensuite ? :D :D


---------------
Nespresso, what else ?
Reply

Marsh Posté le 04-05-2008 à 19:13:16    

gilou a écrit :

Non, c'est un langage "d'application" (on peut écrire un browser HTML en C par exemple) entre autres.
A+,.
 

:jap:


---------------
Nespresso, what else ?
Reply

Marsh Posté le 04-05-2008 à 19:17:00    

Leonidas Ier a écrit :

Moralité, le C c'est trop de la maÿrdasse [:petrus75] C'est de l'algo pur et simple, dingue [:totoz]
 
Le C++ donne quoi ensuite ? :D :D

Le C ca sert a faire plein de choses, car c'est tres permissif (et donc casse gueule a utiliser si on n'a pas les bonnes bases, car ca permet tres facilement de faire des conneries, si on n'est pas relativement méticuleux). Le C++, c'est la même chose, mais revu et corrigé par tous ceux qui se sont cassé la gueule en C au moins une bonne fois violemment, et qui ne veulent plus que ca recommence. C'est plein de gardes fous qui aident ton programme a tenir debout de maniere solide.
A+,


Message édité par gilou le 04-05-2008 à 19:18:52

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 04-05-2008 à 19:18:34    

Donc c'est logique de commencer par le C pour arriver au C++, rassure-moi ? :D
 
Ou alors on peut commencer directos par le C++ ?


---------------
Nespresso, what else ?
Reply

Marsh Posté le 04-05-2008 à 19:20:56    

Il est impératif de ne surtout pas commencer par le C a mon avis.
Tu apprends le C++ dans le Koenig-Moo qui donne les bonnes bases, puis tu lis le Stroustrup.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 04-05-2008 à 19:41:13    

Leonidas Ier a écrit :

Moralité, le C c'est trop de la maÿrdasse [:petrus75] C'est de l'algo pur et simple, dingue [:totoz]


moralité : tu dis du caca et tu sais aps de quoi tu parles  [:petrus75]

 

c'est comme cette merde de PHP, on peut même pas faire de scientific computing avec :o

 

et jamais, oh grand jamais commencer par le C pour passer au C++ fichtre !


Message édité par Joel F le 04-05-2008 à 19:41:36
Reply

Marsh Posté le 04-05-2008 à 20:34:39    

Je veux une application concrète du C [:d_omi]


---------------
Nespresso, what else ?
Reply

Marsh Posté le 04-05-2008 à 20:37:27    

[:absolutelykaveh] c'est une blague
 
la quasi totalité des applications de banques des années 80 à 95, l'informatique embarquée, le calcul scientifique, les jeux vidéos, les moteurs de SGBD ...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed