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

Avatar
Gabriel Dos Reis
Marc Boyer writes:

[...]

| > Les pointeurs, c'est simple.
|
| Voui, mais ça prend plus d'une heure.

Ça dépend.

C'est sûr que si le professeur donne l'impression que c'est compliqu é,
les 2/3 des élèves imprimeront que c'est compliqué.

| > C'est la gestion de la memoire qui est compliquee.
| > Si tu expliques correctement comment ca marche, ca va mieux.

Amen.

-- Gaby
Avatar
Erwan David
Gabriel Dos Reis écrivait :

Marc Boyer writes:

[...]

| Les pointeurs sont incontournables (ou très difficilement
| contournable) pour:

La majorité de ceux qui font du Java n'ont jamais entendu parler de
pointeurs -- ou alors, ils savent que c'est un truc sale que les gens
peu évolués manipulent.



Pourtant s'ils savaient ce que c'est, ils comprendraiet mieux ce que
sont les références de Java et feraient surement moins de connerie

--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Avatar
candide
Gabriel Dos Reis a écrit :



ou alors, ils savent que c'est un truc sale que les gens
peu évolués manipulent.





Vous avez demandé Freud, ne quittez pas ;)
Avatar
candide
a écrit :


...en bref, de l'utilité d'apprendre les pointeurs ?





Faire du C sans pointeur est une énorme limitation. Il y a des choses que tu ne
pourrais pas faire (allouer dynamiquement de la mémoire et plus généralement
utiliser la grande majorité des fonctions de la bibliothèque). Et tu ne pourrais
pas lire d'autrui et a fortiori le réutiliser car l'usage des pointeurs est
omniprésent en C.


Pour les pointeurs, avec mon niveau, je ne comprends pas toujours leur
utilité pour des programmes où les valeurs sont affectées directement
aux variables.




T'en fais pas énormément de gens sont passés par là, d'ailleurs c'était ma
première question sur ce forum il y a 4 ans.






C'est ça que je veux exprimer quand je parle de la présence de
pointeurs ou non en C. Et je n'imagine pas un programme informatique
sans variables. A mes yeux, un pointeur c'est une variable précédée
par *., pas autre chose.



Tu en es resté à la syntaxe de déclaration des pointeurs.



Si on approfondi le concept, ok une variable
en c est un pointeur mais mes connaissances sont limitées. Les
variables dans les autres langages sont-elles également des pointeurs?
Si pointeurs il y a.




Tu t'égares en te posant ce genre de questions (à moins que tu ne veuilles te
tourner vers un langage qui n'oblige pas le programmeur à utiliser des pointeurs).





C'est exactement la même chose, non?




Oui, et alors, où veux-tu en venir ?




Mais je ne vois toujours pas l'utilité de ptr++ sauf qu'il y a moins
de combinaisons avec les touches du clavier...







Bon, tu donnes du code incomplet, plutôt abscon et sans rapport naturel avec les
pointeurs.




...

while (*ptr2++ = *ptr++) ;








ce code assez idiomatique (cf. le codage strcpy() de Plauger) mais qui
effectivement prend beaucoup de temps à être compris. Le problème de ce code est
sa surcharge : ça fait plein de chose "en même temps". Il y a aussi la version
avec == au lieu de = (pour coder un strcmp()).


=>while copie les éléments de T vers U comme si on traduit un poème
classique en message sms dans un forum 12-25 ans. Cette petite astuce
ne peut pas se faire avec des variables sans * ? Je veux pas m'avancer
et dire sans pointeurs car à chaque fois on me reprend pour me
marteler qu'en c chaque variable est un pointeur.



while (T[n])

U[m++] = T[n++] ;



revient au même résultat?



Bon, il faudrait un code complet mais très probablement qu'on peut écrire la
même chose sans pointeur. Tu peux coder énormément de choses sans pointeur dès
lors que tu admet qu'une fonction peut changer les valeurs d'un tableau quand
elle reçoit ce tableau en argument et quitte à l'occasion à déclarer des
tableaux à un seul élément. Mais tu passes à coté du C disons "communautaire".
Avatar
espie
In article ,
Gabriel Dos Reis wrote:
Marc Boyer writes:

[...]

| Les pointeurs sont incontournables (ou très difficilement
| contournable) pour:

La majorité de ceux qui font du Java n'ont jamais entendu parler de
pointeurs -- ou alors, ils savent que c'est un truc sale que les gens
peu évolués manipulent.

-- Gaby



Bof, les references, c'est quasi-pareil. Si tu n'es pas clair sur la notion
d'identite d'objet, tu fais des conneries quel que soit le langage...
Avatar
bpascal123
On 11 sep, 18:15, Gabriel Dos Reis wrote:
candide writes:

[...]

| Que tu dises qu'il faille arrêter _la programmation en C_, ça pourr ait se
| discuter mais là tu y vas un peu fort là, je connais pas mal d'info rmaticiens
| qui n'ont pas vraiment compris les pointeurs

tu parles d'informaticiens auto-proclamés ?

Mais tu as raison qu'ailleurs, ils n'appellent pas ça « pointer » - - ils
disent « objet » ou « référence ».  Et du coup ça change tout.  Comme
quoi, l'habit fait le moine.

-- Gaby



Comme
quoi, l'habit fait le moine.


...Ou la couverture du livre, le livre..
.
Au sujet de livre, j'attends le K&R.
En tant que comptable et non programmeur, est-ce que je peux attendre
de la lecture de ce livre de progresser en C ou bien ça ne sera
qu'une illusion? Je suppose que les auteurs ne l'ont pas écrit pour
des comptables, c'est pourquoi je demande.

Mon budget étant limité, je pense qu'il est préférable que je parco urs
un ou plusieurs tutoriels avant d'aborder cet ouvrage, le site du zéro
que je connaissais un peu mais que je découvers après avoir commencé
un autre tutorial en ligne, bon comme Yannick le conseille et que nous
avons un profil semblable (comptable de formation), je me fie à son
expérience. Ma question, est-ce que pour des non-informaticiens, le
K&R est bon de commencer avec?

Au sujet des pointeurs, je comprends que c'est important. Comme ça a
été dit par Marc plus haut, je n'ai pas encore abordé le chapitre de
la gestion mémoire et il semble que avant de jouer un autre rôle
surtout pour ce qui est de la manipulation des valeurs d'un tableau
simple (sans parler de la gestion de la mémoire), les pointeurs sont
là ne sont pas indispensables. Mais une fois dans le chapitre de
gestion de la mémoire, je m'attends à passer beaucoup de temps sur
quelques lignes de code.

Pascal
Avatar
bpascal123
On 11 sep, 18:15, Gabriel Dos Reis wrote:
candide writes:

[...]

| Que tu dises qu'il faille arrêter _la programmation en C_, ça pourr ait se
| discuter mais là tu y vas un peu fort là, je connais pas mal d'info rmaticiens
| qui n'ont pas vraiment compris les pointeurs

tu parles d'informaticiens auto-proclamés ?

Mais tu as raison qu'ailleurs, ils n'appellent pas ça « pointer » - - ils
disent « objet » ou « référence ».  Et du coup ça change tout.  Comme
quoi, l'habit fait le moine.

-- Gaby



Comme
quoi, l'habit fait le moine.


...Ou la couverture du livre, le livre..
.
Au sujet de livre, j'attends le K&R.
En tant que comptable et non programmeur, est-ce que je peux attendre
de la lecture de ce livre de progresser en C ou bien ça ne sera
qu'une illusion? Je suppose que les auteurs ne l'ont pas écrit pour
des comptables, c'est pourquoi je demande.

Mon budget étant limité, je pense qu'il est préférable que je parco urs
un ou plusieurs tutoriels avant d'aborder cet ouvrage, le site du zéro
que je connaissais un peu mais que je découvers après avoir commencé
un autre tutorial en ligne, bon comme Yannick le conseille et que nous
avons un profil semblable (comptable de formation), je me fie à son
expérience. Ma question, est-ce que pour des non-informaticiens, le
K&R est bon de commencer avec?

Au sujet des pointeurs, je comprends que c'est important. Comme ça a
été dit par Marc plus haut, je n'ai pas encore abordé le chapitre de
la gestion mémoire et il semble que avant de jouer un autre rôle
surtout pour ce qui est de la manipulation des valeurs d'un tableau
simple (sans parler de la gestion de la mémoire), les pointeurs sont
là ne sont pas indispensables. Mais une fois dans le chapitre de
gestion de la mémoire, je m'attends à passer beaucoup de temps sur
quelques lignes de code.

Pascal
Avatar
bpascal123
On 11 sep, 18:15, Gabriel Dos Reis wrote:
candide writes:

[...]

| Que tu dises qu'il faille arrêter _la programmation en C_, ça pourr ait se
| discuter mais là tu y vas un peu fort là, je connais pas mal d'info rmaticiens
| qui n'ont pas vraiment compris les pointeurs

tu parles d'informaticiens auto-proclamés ?

Mais tu as raison qu'ailleurs, ils n'appellent pas ça « pointer » - - ils
disent « objet » ou « référence ».  Et du coup ça change tout.  Comme
quoi, l'habit fait le moine.

-- Gaby



Comme
quoi, l'habit fait le moine.


...Ou la couverture du livre, le livre..
.
Au sujet de livre, j'attends le K&R.
En tant que comptable et non programmeur, est-ce que je peux attendre
de la lecture de ce livre de progresser en C ou bien ça ne sera
qu'une illusion? Je suppose que les auteurs ne l'ont pas écrit pour
des comptables, c'est pourquoi je demande.

Mon budget étant limité, je pense qu'il est préférable que je parco urs
un ou plusieurs tutoriels avant d'aborder cet ouvrage, le site du zéro
que je connaissais un peu mais que je découvers après avoir commencé
un autre tutorial en ligne, bon comme Yannick le conseille et que nous
avons un profil semblable (comptable de formation), je me fie à son
expérience. Ma question, est-ce que pour des non-informaticiens, le
K&R est bon de commencer avec?

Au sujet des pointeurs, je comprends que c'est important. Comme ça a
été dit par Marc plus haut, je n'ai pas encore abordé le chapitre de
la gestion mémoire et il semble que avant de jouer un autre rôle
surtout pour ce qui est de la manipulation des valeurs d'un tableau
simple (sans parler de la gestion de la mémoire), les pointeurs sont
là ne sont pas indispensables. Mais une fois dans le chapitre de
gestion de la mémoire, je m'attends à passer beaucoup de temps sur
quelques lignes de code.

Pascal
Avatar
Gabriel Dos Reis
(Marc Espie) writes:

| In article ,
| Gabriel Dos Reis wrote:
| >Marc Boyer writes:
| >
| >[...]
| >
| >| Les pointeurs sont incontournables (ou très difficilement
| >| contournable) pour:
| >
| >La majorité de ceux qui font du Java n'ont jamais entendu par ler de
| >pointeurs -- ou alors, ils savent que c'est un truc sale que les gens
| >peu évolués manipulent.
| >
| >-- Gaby
|
| Bof, les references, c'est quasi-pareil. Si tu n'es pas clair sur la noti on
| d'identite d'objet, tu fais des conneries quel que soit le langage...

Il n'y a pas de pointeur, mais il y a NullPointerException :-)

-- Gaby
Avatar
Gabriel Dos Reis
Erwan David writes:

| Gabriel Dos Reis écrivait :
|
| > Marc Boyer writes:
| >
| > [...]
| >
| > | Les pointeurs sont incontournables (ou très difficilement
| > | contournable) pour:
| >
| > La majorité de ceux qui font du Java n'ont jamais entendu parler de
| > pointeurs -- ou alors, ils savent que c'est un truc sale que les gens
| > peu évolués manipulent.
|
| Pourtant s'ils savaient ce que c'est, ils comprendraiet mieux ce que
| sont les références de Java et feraient surement moins de conne rie

ah, ça... :-)

-- Gaby