La bonne écriture d'un hello world ? [C] - C - Programmation
Marsh Posté le 17-10-2003 à 19:59:42
la première c'est la bonne, la deuxième est correcte, la troisième pue.
Marsh Posté le 17-10-2003 à 20:13:22
la seconde n'est pas correcte puisque le compilo émettra un warning. Manque un return 0; de bon
Marsh Posté le 17-10-2003 à 20:23:02
drasche a écrit : la seconde n'est pas correcte puisque le compilo émettra un warning. Manque un return 0; de bon |
la première est la bonne. le return 0; est optionnel en C99, nécessaire en ANSI
Marsh Posté le 17-10-2003 à 20:23:54
drasche a écrit : la seconde n'est pas correcte puisque le compilo émettra un warning. Manque un return 0; de bon |
et pas la première?
Marsh Posté le 17-10-2003 à 20:27:51
certes, je l'avais loupée
Marsh Posté le 17-10-2003 à 20:29:11
C99 impose int comme retour à main. ton code n'est ni ansi ni C99 au sens strict
Marsh Posté le 17-10-2003 à 20:29:58
MagicBuzz a écrit : c pas :
|
disons qu'il faut pas avoir envie de tester le code retour de ton prog dans ton exemple
Marsh Posté le 17-10-2003 à 20:31:29
Taz a écrit : C99 impose int comme retour à main. ton code n'est ni ansi ni C99 au sens strict |
ça tu t'en fout.
mon exemple est le seul à faire un réel hello world : il se contente d'afficher un truc à l'écran, point barre.
si ça retourne un int, alors le prog ne se contente plus d'afficher un truc à l'écran, puisqu'il retourne une valeur en plus...
Marsh Posté le 17-10-2003 à 20:32:55
edit: zut je me souviens plus du code du smiley pour assister aux débats qui s'annoncent passionnants
Marsh Posté le 17-10-2003 à 20:33:50
MagicBuzz a écrit : |
Donc tu préfères un truc non standard qui fait exactement ce que tu veux qu'un truc standard qui marche?
Marsh Posté le 17-10-2003 à 20:34:09
antp a écrit : |
ah toi aussi?
Marsh Posté le 17-10-2003 à 20:35:32
d'un autre côté c'est vendredi. seul truc bizarre, nraynaud n'a pas sortit son smiley fétiche
Marsh Posté le 17-10-2003 à 20:38:24
j'ai jamais compris pourquoi on ecrivait le hello world avec C avec printf d'ailleurs, alors qu'un puts et bien plus simple/efficace
Marsh Posté le 17-10-2003 à 20:51:25
skeye a écrit : |
S'il s'agit de faire un exemple le plus basique possible dans l'esprit du hello world, oui.
Quand t'apprends à développer, avant de connaître chaque ligne des normes ANSI, ISO ou POSIX, t'apprends déjà les rudiments. Et indiquer un type de retour (et faire un return par dessus le marché) y'a rien de mieu pour que le newbie en puissance comprenne rien au 2 lignes de code inutiles... Surtout que sur 3 lignes, 2 lignes inutiles ça commence à faire un bon ratio.
Il manquerait plus que tu t'amuses en plus à écrire Hello Word en UTF-8 pour être 100% au top des normes.
Marsh Posté le 17-10-2003 à 20:53:38
Pourquoi tu mets un "void" inutile en param alors ?
En UTF8 "Hello Word" s'écrit "Hello World", non ? Y a rien de plus...
Marsh Posté le 17-10-2003 à 20:56:17
parceque sur certains (vieux peut-être) compilos il est obligatoire de spécifier quand une fonction ne retourne rien.
Et c'est moins déroutant d'expliquer en 4 lignes qu'on met void dedans parceque le main ne fait rien, que d'expliquer 25 pages plus loin que parfois on met pas de type de retour parcequ'on retourne rien.
Je préfère lire explicitement que je retourne rien plutôt que de lire une fonction où un mec à visiblement oublié de spécifier le type retourné. Si void sur un main n'est pas ANSI, alors j'espère bien qu'une procédure sans void ne l'est pas non plus.
Marsh Posté le 17-10-2003 à 20:56:31
non, pas inutile en C. c'est la une connerie. () veut dire autant de paramètre que l'on veut (inaccessibles). quand les gars ont voulu normaliser tout ça, des cons ont gueulés que () ne ressemblait pas a une synthaxe pour dire "pas de paramètres" contrairement à (void) ... et c'est passé, quelle merde ...
heureusement le wc21 du C++ n'a pas fait cette idiotie, donc a contrario, () et (void) signifie pas de paramètres
Marsh Posté le 17-10-2003 à 20:57:00
antp a écrit : Pourquoi tu mets un "void" inutile en param alors ? |
Sauf que t'appelles un peu pas printf qui retourne du ANSI, c'est à dire du ASCII étendu localisé.
Marsh Posté le 17-10-2003 à 20:57:13
MagicBuzz a écrit : parceque sur certains (vieux peut-être) compilos il est obligatoire de spécifier quand une fonction ne retourne rien. |
t'es un peu à côté de la plaque ...
Marsh Posté le 17-10-2003 à 20:59:19
Taz a écrit : t'es un peu à côté de la plaque ... |
en quoi ? (pour le coup des params, oui, je croyais qu'il parlais du void de retour, qui est facultatif, et qui selon moi ne le devrait pas)
Marsh Posté le 17-10-2003 à 21:07:56
Taz a écrit : non, pas inutile en C. |
ha mince
bon je te laisse parler pour la suite alors
Marsh Posté le 17-10-2003 à 21:12:24
MagicBuzz a écrit : |
ben il n'est pas facultatif ... ça doit faire depuis 83 que int n'est plus te type par défaut en C ...
Marsh Posté le 17-10-2003 à 21:21:51
Ok donc c'est la première. Mais par exemple je viens de choper ça sur le net
Code :
|
Son main() ici n'est donc pas bon là ?
Faudrait rajouter un int devant ?
Marsh Posté le 17-10-2003 à 21:24:38
Ils sont beau les boulets avec leur langage de merde.
26 réponses pour un hello world !
et après c'est les mêmes qui pondent le joli code de
http://cvs.sourceforge.net/viewcvs [...] &view=auto
D'ailleur ces mêmes gars sont en train de pondre un module noyau, ça va être beau !
Marsh Posté le 18-10-2003 à 00:20:19
Oui évidemment et aussi le return pour faire plus correct encore mais c'était uniquement sur le int main() que je voulais avoir des précisions.
Marsh Posté le 18-10-2003 à 01:03:26
T'as un bouquin : Le Langage C norme ANSI de Kernighan B. W. & Ritchie D. M.
sinon je dirais que ca serait:
Code :
|
Le return d'une valeur indique juste si le programme s'est execute jusqu'au bout sans problemes ou pas...
enfin t'as qu'a compiler avec gcc avec les options -ANSI pour suivre les normes
Marsh Posté le 18-10-2003 à 03:23:38
Hazar a écrit : T'as un bouquin : Le Langage C norme ANSI de Kernighan B. W. & Ritchie D. M.
|
D'ailleurs si on veut titiller avec la norme ansi, on se rapprocherait plus de :
Code :
|
( ou
Code :
|
, selon )
Marsh Posté le 18-10-2003 à 03:53:59
moi ce qui m'étonnes c'est pourquoi utiliser printf() là ou puts() suffit
Marsh Posté le 18-10-2003 à 03:54:02
En fait la signature de main c'est même :
Code :
|
J'en profite pour rappeler l'intéret de placer le nom de la fonction en colone 0, avec le type retourné (et les autres mots clés du genre « static ») sur un ligne a part : ça permet de chercher facilement la définition d'une fonction a coups de regexp (e.g ^main).
Marsh Posté le 18-10-2003 à 04:43:37
Matafan a écrit : |
Le gens normaux utilisent des générateurs de tags. Même en C ça existe. C'est largement plus précis vu que ça repose sur la grammaire.
Marsh Posté le 18-10-2003 à 05:05:16
C'est tellement facile de mettre les noms de fonction a gauche et ça facilite tellement la vie... Tu ne fais jamais « less » pour jeter un coup d'oeil rapide sur un source ? Jamais un « grep » pour savoir dans quel fichier du répertoire est définie une fonctions ?
Sans compter que si tu bosses sur des giga de source et que tu cherche une fonction au nom anodin dans ton petit répertoire, les tags ou cscope ne vont pas beaucoup t'aider...
Marsh Posté le 18-10-2003 à 06:44:35
En général, si le projet est gros et qu'il est en C j'y touche pas, chacun sa merde.
sinon, je fais des grep sans mettre de ^ devant le nom de la fonction et ça ne me dérange pas plus que ça. Par contre, j'ai horreur de lire un source qui est formaté comme tu le préconises.
Marsh Posté le 18-10-2003 à 11:09:36
nraynaud a écrit : En général, si le projet est gros et qu'il est en C j'y touche pas, chacun sa merde. |
plus de 50% du noyau linux est codé en C
et ça marche plutot bien
Hazar a écrit :
T'as un bouquin : Le Langage C norme ANSI de Kernighan B. W. & Ritchie D. M.
Devine par quoi il commence ?
Code :
|
ça ma rebute un peu
Marsh Posté le 18-10-2003 à 11:48:42
vanilla a écrit :
|
le bouquin je t'avoue que je l'ai pas lu ... enfin c'est pas ecrit par n'importe qui, ce sont un peu les parents du C qui ont fait ca ...
Marsh Posté le 18-10-2003 à 11:57:43
Ouais je sais mais j'ai déjà entendu dire qu'il était plus vraiment à jour, la preuve ici d'ailleurs. C'est un peu dommage qu'il le remmette pas aux normes.
Marsh Posté le 18-10-2003 à 12:04:58
vanilla a écrit : Ouais je sais mais j'ai déjà entendu dire qu'il était plus vraiment à jour, la preuve ici d'ailleurs. C'est un peu dommage qu'il le remmette pas aux normes. |
pourquoi ne pas remettre le hamlet de shakespeare au gour du jour pendant qu'on y est?
Marsh Posté le 18-10-2003 à 12:05:58
vanilla a écrit : |
C'est un miracle.
J'ai jamais su si ce sont des génies (ils auraient paut-être pas choisi le C dans ce cas là) ou s'ils sont très nombreux.
Marsh Posté le 17-10-2003 à 19:56:44
En lisant des pdf, livres et tout ça, à chaque fois, on obtient un code différent pour un simple hello world.
Par exemple, yen a certains qui vont écrire :
D'autres :
D'autres encore comme ceci :
C'est lourd parce que je sais pas laquelle est la meilleure, laquelle est la plus "aux normes". Et tiens en parlant de norme il me semble que c'est en partie du à ça qu'on a droit à plusieurs écriture (genre la dernière doit être "dépassée" non ?)
Pour finir, ya t-il un livre en C qui respecte ces choses là (dans le sens ayant un code aux "normes" ) ?
Message édité par vanilla le 17-10-2003 à 19:58:44