Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Différence de résultat entre compilateurs

291 réponses
Avatar
YannicK
Bonjour,

éternel débutant en C pour mon plaisir, je me permets de venir vous
demander quelques éclaircissements sur une situation que je n'arrive pas
à comprendre :

J'utilise le cours en ligne spécial "grand débutant" du "site du zéro" :
<http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html>

Je réalise les exercices du cours dans deux environnements différents :
- sous windows vista avec l'IDE visual C++ 2008 express
- sous linux ubuntu 9.04 avec gcc

J'ai écrit un programme dans le cadre des exercices proposés sur les
tableaux par ce cours en ligne. Le fichier en question peut être
téléchargé ici :
< http://dl.free.fr/to7PFReLM/tableau.c>

Ce qui m'étonne, c'est que j'arrive à compiler sans difficulté ce code
sous Linux, et que le programme se comporte exactement comme je le
souhaite. Par contre, sous Windows, impossible de compiler, l'IDE me
renvoie 42 erreurs et 31 avertissements !!! La plupart des erreurs
semblent être liées aux variables. Par exemple :
"erreur de syntaxe : absence de ';' avant 'type'"
"identificateur non déclaré"

Or, j'ai beau lire et relire mon code, les variables me sembles toutes
déclarées correctement et il ne manque à mon sens pas de ";" en fin
d'instructions. De plus, comme je le disais au début, le même code se
compile sans aucune erreur sous Linux ...

Alors, comment expliquer que deux compilateurs réagissent aussi
différemment, et où et mon erreur ?

Merci par avance du temps que vous pourrez me consacrer,



--
YannicK
yann801 *arobase* yahoo *point* fr
yann801 *at* yahoo *dot* fr

10 réponses

1 2 3 4 5
Avatar
Éric Lévénez
a écrit :
C'est pas parce que dans
les années 70 et 80 on programmait sur des frigidaires avec un petit
écran ou une imprimante ou des écrans monochromes qu'on doit
s'infliger la même chose...



Tu sembles penser que quand on programme en C on a obligatoirement une
clavier et un écran. Et bien non, il y a énormément de programme qui
tournent en tâche de fond et n'ont rien de tout cela, même sur une
machine avec un écran. Tu n'as qu'à penser au noyau d'un système, à tous
les outils, à tous les serveurs. L'interface graphique n'est qu'une
toute petite partie d'un système et elle est souvent facultative.

Si tu veux juste faire du GUI, alors ce n'est pas le C qu'il faut
utiliser, mais le C++, C#, Objective-C... selon le système cible.

--
> Éric Lévénez
> FAQ de fclc : <http://www.levenez.com/lang/c/faq/>
Avatar
espie
In article ,
wrote:
Je trouve pas que le CLI est inférieur mais le look du CLI n'est pas
très joyeux... Je ne dis pas que le CLI n'est pas efficace mais des
fois on peut joindre l'utile à l'agréable. C'est pas parce que dans
les années 70 et 80 on programmait sur des frigidaires avec un petit
écran ou une imprimante ou des écrans monochromes qu'on doit
s'infliger la même chose...



Pour la plupart des vraies *taches* de boulot, je suis incroyablement plus
productif avec une pure interface texte. Peut-etre que la nouvelle generation
a moins appris a lire et ecrire et s'en sort mieux avec du graphique ?

En php, css, il y a moyen d'avoir un rendu visuel sur une page
web...Je suis d'accord, ces langages sont des langages interprétés
mais n'y t-il pas des ponts entre langages interprétés et compilés?



Ouais, il y a aussi moyen de poirauter trois plombes a chaque fois que
tu fais un truc. Meme avec ajax. Meme en local. Meme avec une machine
puissante. Ca n'a rien d'efficace. La plupart des applis graphiques ont
des raccourcis clavier peu ergonomiques, et mal foutus (deja, pour des
raccourcis utiles et efficaces, il y a une phase d'apprentissage)...

Je suis d'accord qu'il y a des domaines ou une bonne interface graphique
donne de meilleurs resultats qu'une interface texte, mais c'est loin
d'etre systematique...
Avatar
JKB
Le 10-09-2009, ? propos de
Re: Re: Différence de résultat entre compilateurs,
Marc Espie ?crivait dans fr.comp.lang.c :
In article ,
wrote:
Je trouve pas que le CLI est inférieur mais le look du CLI n'est pas
très joyeux... Je ne dis pas que le CLI n'est pas efficace mais des
fois on peut joindre l'utile à l'agréable. C'est pas parce que dans
les années 70 et 80 on programmait sur des frigidaires avec un petit
écran ou une imprimante ou des écrans monochromes qu'on doit
s'infliger la même chose...



Pour la plupart des vraies *taches* de boulot, je suis incroyablement plus
productif avec une pure interface texte. Peut-etre que la nouvelle generation
a moins appris a lire et ecrire et s'en sort mieux avec du graphique ?

En php, css, il y a moyen d'avoir un rendu visuel sur une page
web...Je suis d'accord, ces langages sont des langages interprétés
mais n'y t-il pas des ponts entre langages interprétés et compilés?



Ouais, il y a aussi moyen de poirauter trois plombes a chaque fois que
tu fais un truc. Meme avec ajax. Meme en local. Meme avec une machine
puissante. Ca n'a rien d'efficace. La plupart des applis graphiques ont
des raccourcis clavier peu ergonomiques, et mal foutus (deja, pour des
raccourcis utiles et efficaces, il y a une phase d'apprentissage)...

Je suis d'accord qu'il y a des domaines ou une bonne interface graphique
donne de meilleurs resultats qu'une interface texte, mais c'est loin
d'etre systematique...



+1

Et je rajouterais que si on programmait aujourd'hui une machine
comme on la programmait dans les années 70, on aurait des foudres de
guerre.

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
David Remacle
Éric Lévénez a écrit :
a écrit :
C'est pas parce que dans
les années 70 et 80 on programmait sur des frigidaires avec un petit
écran ou une imprimante ou des écrans monochromes qu'on doit
s'infliger la même chose...



Tu sembles penser que quand on programme en C on a obligatoirement une
clavier et un écran. Et bien non, il y a énormément de programme qui
tournent en tâche de fond et n'ont rien de tout cela, même sur une
machine avec un écran. Tu n'as qu'à penser au noyau d'un système, à tous
les outils, à tous les serveurs. L'interface graphique n'est qu'une
toute petite partie d'un système et elle est souvent facultative.

Si tu veux juste faire du GUI, alors ce n'est pas le C qu'il faut
utiliser, mais le C++, C#, Objective-C... selon le système cible.

--
> Éric Lévénez
> FAQ de fclc : <http://www.levenez.com/lang/c/faq/>



Eric, corrige moi.. mais je pense qu'on peut faire une interface GTK
avec du C et non du C++?
Avatar
espie
In article <4aa8ffe1$0$9969$,
David Remacle wrote:
Eric, corrige moi.. mais je pense qu'on peut faire une interface GTK
avec du C et non du C++?



On peut. C'est affaire de gout. Gtk+, c'est verbeux, c'est gros, et ca
donne une curieuse impression quand on est habitue a des systemes orientes
objet. Bon d'accord, la barriere d'entree C++ est la, mais Qt m'a toujours
semble infiniment plus elegant que Gtk+ (et le code que je vois ne me dement
pas).
Avatar
Stephane Legras-Decussy
a écrit dans le message de news:

Seulement, je me demande à partir de quand on commence à travailler
avec une interface graphique plutôt que le terminal?



après etre à l'aise avec fonctions et pointeurs...

le débutant a peur des pointeurs, je ne sais
pas pourquoi...

il n'y a rien de compliqué, il suffit d'un seul exemple
pour comprendre, c'est la fonction qui échange
2 nombres... j'ai compris les pointeurs en 1 heure
ya 20 ans avec ça...


sinon je pense qu'il est important que la programmation
soit rapidement ludique pour le débutant...

tu peux meme attaquer OpenGL, c'est à la portée du
débutant un peu reveillé et c'est un peu plus funky que parser
du xml...
Avatar
candide
Stephane Legras-Decussy a écrit :


le débutant a peur des pointeurs, je ne sais
pas pourquoi...



Ça pique quand on a la peau tendre ;)


il n'y a rien de compliqué,



Tiens on l'avait pas encore fait ce troll sur fclc


il suffit d'un seul exemple
pour comprendre, c'est la fonction qui échange
2 nombres... j'ai compris les pointeurs en 1 heure
ya 20 ans avec ça...




T'as pensé au don d'organe ?
Avatar
Stephane Legras-Decussy
"candide" a écrit dans le message de news:
4aaa362a$0$725$
T'as pensé au don d'organe ?



sans rire, si on pige pas les pointeurs en une heure,
faut arreter l'informatique...

attention je parle d'etre opérationnel
avec les contenu de, adresse de, parametres de fonction,
et pas toutes les subtilités sur les void *
et premiers éléments de tableau...

mais je comprends que ça te choque vu les questions
existencielles d'enc***lage de la norme que tu
te poses à longueur de journée... :-)
Avatar
candide
Stephane Legras-Decussy a écrit :
"candide" a écrit dans le message de news:
4aaa362a$0$725$
T'as pensé au don d'organe ?



sans rire,



Ouf ! tu ne m'as pas mal compris, c'est vrai que j'aurais pu mettre un ;)


si on pige pas les pointeurs en une heure,
faut arreter l'informatique...



Tu fais toujours comme ça dans la vie, si au bout d'une heure ça marche pas, tu
laisses tomber ? ;)

Que tu dises qu'il faille arrêter _la programmation en C_, ça pourrait se
discuter mais là tu y vas un peu fort là, je connais pas mal d'informaticiens
qui n'ont pas vraiment compris les pointeurs (et qui pourtant savent utiliser
l'annuaire qui après tout n'est autre qu'une suite d'adresses ...).

Personnellement, je ne regrette pas de ne pas avoir abandonné au bout de disons
... deux ans. Bien sûr que stricto sensu, un pointeur c'est facile à comprendre
mais c'est un comme une histoire drôle dont tu comprends tous les mots et qui ne
te fait pas rire.



attention je parle d'etre opérationnel
avec les contenu de, adresse de, parametres de fonction,
et pas toutes les subtilités sur les void *
et premiers éléments de tableau...





Pour moi si tu as compris quelque chose et que tu ne peux rien en faire, tu ne
l'as pas vraiment compris.Et pour moi, l'âme du C, c'est les pointeurs, en tous
cas, ça a été longtemps mon point de blocage (façon histoire drôle).



mais je comprends que ça te choque vu les questions
existencielles d'enc***lage de la norme que tu
te poses à longueur de journée... :-)



Si tu parles d' enc***lage au sens d'enc***lage de mouches, tu te trompes. La
Norme s'intéresse autant au détail qu'aux questions fondamentales. La Norme fait
des distinctions dans son exposition qui n'apparaissent pas dans les exposés
traditionnels. La Norme a au moins la délicatesse et l'intelligence de commencer
son exposé en donnant des définitions, relativement précises. La Norme sépare la
syntaxe, les contraintes et la sémantique et une partie de la difficulté à
comprendre les pointeurs provient de la syntaxe des pointeurs. La Norme t'aide
à comprendre qu'il faut un vocabulaire choisi pour parler sans ambiguïtén (par
exemple, la Norme n'utilise pas le terme de "variable"). Bref, la Norme n'est
pas un document réservé au programmeur chevronné, il s'adresse aussi à ceux qui
veulent enseigner et/ou comprendre le C ou en tous cas, ça peut aider certains à
mieux l'enseigner (je vous rassure, je n'enseigne pas le C).
Avatar
Marc Boyer
Le 11-09-2009, Stephane Legras-Decussy a écrit :

a écrit dans le message de news:

Seulement, je me demande à partir de quand on commence à travailler
avec une interface graphique plutôt que le terminal?



après etre à l'aise avec fonctions et pointeurs...

le débutant a peur des pointeurs, je ne sais
pas pourquoi...



J'ai aussi du mal à comprendre. Encore que parfois...

il n'y a rien de compliqué, il suffit d'un seul exemple
pour comprendre, c'est la fonction qui échange
2 nombres... j'ai compris les pointeurs en 1 heure
ya 20 ans avec ça...



C'est en effet un problème: dans une promo classique,
il y a 20% qui comprend du premier coup (et à du mal à
comprendre que les autres puissent ne pas comprendre),
et les autres.
Que fait-on des autres ?

Marc Boyer
--
En prenant aux 10% des francais les plus riches 12% de leurs revenus,
on pourrait doubler les revenus des 10% les plus pauvres.
http://www.inegalites.fr/spip.php?article1&id_mot0
1 2 3 4 5