[C] petit pb // quel est le meilleur compilateur ?

petit pb // quel est le meilleur compilateur ? [C] - Programmation

Marsh Posté le 03-03-2001 à 19:11:25    

petit pb avec ce porg qui compile mais qui foire :
 
#include <stdio.h>
main()
{
int *var;
*var=5;
printf(" *var= %d ", *var);
printf("/n &var= %p ", &var);
printf("/n var= %p ", var);
}
 
 
========
cependant, qu est ce que vous pensez du compilateur Dev C++ ???

Reply

Marsh Posté le 03-03-2001 à 19:11:25   

Reply

Marsh Posté le 03-03-2001 à 19:18:17    

int *var -> pointeur vers un entier, espace mémoire pointé indéfini (puisque variable non initialisée)
*var=5 -> on place 5 à une adresse mémoire indéfinie.
C'est normal que ça plante je crois... non ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 03-03-2001 à 19:29:04    

antp a raison : ton pointeur pointe n'importe où, dans ton cas, visiblement dans une zone mémoire où ton programme n'a pas accès, d'où le plantage. Tu devrais essayer  
 
#include <stdio.h>
main()
{
int val;
int *var= &val;
*var=5;
printf(" *var= %d ", *var);//valeur de val(zone pointée par var)
printf("\n &var= %p ", &var);//adresse du pointeur var
printf("\n var= %d ", var);  //adresse de val
}

Reply

Marsh Posté le 03-03-2001 à 19:52:53    

je croi sque je melange certain truc en fait :
 
&var designe l adresse de var    ?!
*var  designe l objet d adresse var ?!

Reply

Marsh Posté le 03-03-2001 à 20:36:56    

Oui mais ton pointeur var pointe n'importe où, là.
Pour qu'il pointe sur un endroit valable, il faut soit lui assigner l'adresse d'une variable int, soit allouer de la mémoire avec malloc.

Reply

Marsh Posté le 03-03-2001 à 21:45:53    

mince je capte pu rien :(
je viens de chopper un exemple =
 
#include <stdio.h>
main()
{
int i;
int *pi;
i=5;
pi=&i;
*pi=6;
}
 
pkoi a la fin  i vaut 6  ???

Reply

Marsh Posté le 03-03-2001 à 21:58:53    

slvn a écrit a écrit :

je croi sque je melange certain truc en fait :
 
&var designe l adresse de var    ?!
*var  designe l objet d adresse var ?!




 
 
erreur: un pointeur est une adresse
 
donc &var c'est une adresse d'adresse, ca veut rien dire.
 
var est l'adresse (c'est un entier donc tu peux le mettre dans un printf), *var est la variable pointée, c'est-à-dire stockée
à l'adresse var .
 
 
dans ton exemple:
 
 
#include <stdio.h>  
main()  
{  
int i;  
int *pi;  
i=5;       i vaut 5
pi=&i;      pi devient l'adresse de i
*pi=6;      à l'adresse pi, on place la valeur 6, or i se trouve
            également à cette adresse, donc i recoit la valeur 6
}

Reply

Marsh Posté le 03-03-2001 à 22:03:57    

ou comme ça (cf Verdoux):
 
#include <stdio.h>  
main()  
{  
int *var;  
var=(int*)malloc(sizeof(int));
*var=5;  
printf(" *var= %d ", *var);  
printf("/n &var= %p ", &var);  
printf("/n var= %p ", var);  
}


---------------
http://www.cheata.net le site qui vous donne la banane!
Reply

Marsh Posté le 03-03-2001 à 23:52:55    

merci de vos reponses, j ai enfin capté :)

 

--Message édité par slvn--

Reply

Marsh Posté le 04-03-2001 à 04:05:52    

le meilleur compilateur C est sans aucun doute possible gcc
paramétrable à volonté, la version Unix étant l'idéal évidemment

Reply

Marsh Posté le 04-03-2001 à 04:05:52   

Reply

Marsh Posté le 04-03-2001 à 10:40:20    

oh_damned a écrit a écrit :

le meilleur compilateur C est sans aucun doute possible gcc
paramétrable à volonté, la version Unix étant l'idéal évidemment




 
Je dis peut-être des bêtises mais du temps ou je m'en servait sous UNIX (AIX 4.1.???) le code n'avait pas l'air très optimisé en comparaison de ce que sortait xlc(je ne suis pas sur du nom) même avec l'option -o2

Reply

Marsh Posté le 04-03-2001 à 14:49:47    

en fait qu est ce qu il sont de mieux ces compilateur ??
 
moi j ai choppé Dev C++,   il est tout joli et en plus il marche sous windows !
 
mais apparement , il a une moins bonne reputation, que les autre, ..parceque justement il tourne sous windows

Reply

Marsh Posté le 04-03-2001 à 15:30:48    

Dev C++ est très bien pour le C. Par contre pour le C++ vaut mieux Visual C++ ou Borland C++. Enfin bon avant j'utilisais Dev C++ et ça suffisait pour apprendre ce que c'est que les pointeurs. En plus le compilateur est très rigoureux (conversions implicites, etc...).

Reply

Marsh Posté le 04-03-2001 à 15:43:28    

ok, mais pkoi borland  serait mieux ?

Reply

Marsh Posté le 04-03-2001 à 21:24:29    

pour ce qui est de la rigueur de devC++ je ne peux que confirmer.
il est tellment rigoureux que presque tous les codes que je trouve sur le net pour apprendre ne se compilent pas a cause d'erreurs mineures.
si comme moi tu apprends sur le tas a partir de prgs deja fait, je sais pas si c le top devc++.
c pour ca que je cherche borland c++ pour voir si il est plus tolerant.


---------------
Plus tu pedales moins vite Moins tu avances plus vite
Reply

Marsh Posté le 04-03-2001 à 22:27:42    

bah c'est pas mal un compilo rigoureux, comme ça ça évite de partir dans tout les sens dans les gros prog.


---------------
http://www.cheata.net le site qui vous donne la banane!
Reply

Marsh Posté le 05-03-2001 à 10:16:31    

N'oubliez pas que le compilateur n'est qu'un outil dans une chaine. Un debuggeur est très important aussi, surtout quand on debute. Ca evite d'avoir a faire 3 tonnes de printf quand il y a une erreur dans les milles lignes de codes que l'on vient de se cogner. En plus ca fait gagner du temps car on peux visualiser des choses impossibles autrement (espace mémoire, enumérations, backtrace etc...).
 
Pour gcc, il y a gdb qui est aussi multiplateforme, avec plein de frontend graphiques (surtout sous unix, nottament DDD). VisualC++ a le sien aussi. Par contre Borland C++ version gratuite n'en a pas...

Reply

Marsh Posté le 05-03-2001 à 10:42:03    

gcc a une permissibilité (si ce mot n'existe pas je vais le proposer à l'académie) que l'on peut paramétrer je crois. Si tu veux compiler en C ANSI tu peux.

Reply

Marsh Posté le 05-03-2001 à 12:16:18    

je crois que le meilleur compilateur c/c++ en terme de perfs, c VectorC, mais je n'arrive même pas à télécharger une version démo :( !
ya aussi le compilateur Intel qui n'est pas mal du tout !

Reply

Marsh Posté le 05-03-2001 à 13:27:16    

Oui GCC c'est -ansi pour les regles ansi , -Wall pour tout les warnings, -Werror pour erreurs sur les warnings, -pedantic pour la norme ISO (plus stricte que ansi je crois), -pedantic-errors pour arrets sur les warnings... Y'en a des pages comme ca...
 
En plus gcc est multiplateforme/multiprocesseur, donc très bien pour faire du cross-compiling (voire du canadian cross-compiling cad construire un cross-compilo sur un host different du host de destination...)

Reply

Sujets relatifs:

Leave a Replay

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