Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1750 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C,C++] Désactiver warning (Résolu)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C,C++] Désactiver warning (Résolu)

n°1702208
LaTex_man
Posté le 14-03-2008 à 10:30:59  profilanswer
 

C'est mon premier post sur le forum et j'aimerai préciser que j'ai bien cherché avant de poster. Si ça se trouve, je n'ai pas taper les bons mots.
 
Je suis sur Eclipse Version: 3.3.1.1 et j'utlise le plugin CDT.
 
Mon problème est le suivant : à un moment dans le code, j'utilise le principe de la division entière à partir d'un réel.  

Code :
  1. double x;
  2. int phi;
  3. phi = x/5;


 
Du coup, le compilateur me montre une erreur à la ligne 3 qui est un warning dans lequel il me dit "Attention, converting int à partir de double".
C'est certes un warning mais dans Eclipse la petite croix rouge apparait sur la ligne et chaque fois que je compile, il me met que le projet contient une erreur.  
 
Du coup, je suis obligé d'aller voir cette erreur. Ce warning m'empêche de compiler "la conscience tranquille" parce que quand j'ai une vrai erreur par mécanisme (ah ça doit être le warning), des fois je passe outre.
 
Ma question est simple : où est ce que je peux dire au compilateur, "laisse tomber ce genre d'erreur" ?
 
J'ai regardé dans préférences->CDT, il n'y a que des options relatives aux mises en pages.
Mon makefile utilise la commande g++.
La réponse peut elle être au niveau des Flags utilisés dans le makefile ?

Code :
  1. .cpp.o:
  2. $(rm) $@
  3. $(CC) $(CFLAGS) -c $*.cpp -o $*.o


 
A défaut, il n'y a pas de façon plus propre de faire la division entière ?
 
Je vous remercie d'avance pour votre réponse !


Message édité par LaTex_man le 14-03-2008 à 14:35:35
mood
Publicité
Posté le 14-03-2008 à 10:30:59  profilanswer
 

n°1702313
Jux_
Posté le 14-03-2008 à 11:49:11  profilanswer
 

Enlever systématiquement un warning est une mauvaise idée. Il y a des cas ou ça peut effectivement te montrer une vrai erreur.
Pour ce cas, il suffit d'expliquer au compilo que tu sais ce que tu fais en castant explicitement la valeur de retour de ton opération.
(D'ailleurs ici, tu n'a surement pas besoin de la précision d'un double...).


Message édité par Jux_ le 14-03-2008 à 11:50:06
n°1702319
olivthill
Posté le 14-03-2008 à 11:53:13  profilanswer
 

Les langages C et C++ encore plus, réclament de "caster" les données qui ne sont pas du même type. Cela fait parti du langage.
Donc, il suffit de remplacer

phi = x/5;

par

phi = (int)(x/5.0);


Sinon, vous pouvez faire du Basic, du Php ou d'autres langages.


Message édité par olivthill le 14-03-2008 à 11:54:27
n°1702361
ElDesdicha​do
Posté le 14-03-2008 à 12:17:16  profilanswer
 

Code :
  1. static_cast<int>(x/5.0);


ou

Code :
  1. static_cast<int>(x)/5;


dépend de ce que tu veux faire, et en général il vaut mieux appelé un chat un chat et un cast un cast. Par ailleurs, si tu utilises static_cast, ensuite il est plus simple de détecter dans ton code les cast que tu as réalisé et les corriger si nécessaire dans le futur...  

n°1702431
LaTex_man
Posté le 14-03-2008 à 14:35:09  profilanswer
 

J'ai testé les deux solutions à l'instant : les deux marchent.
"cast" me paraît une meilleure solution.  
Sinon, je n'ai pas le choix concernant le langage !
 
Je vais marquer Résolu dans le titre.
Merci à vous.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C,C++] Désactiver warning (Résolu)

 

Sujets relatifs
[Résolu] Redirection htaccess index.php vers index.php?page=[Résolu] VB.NET lire clé registre
[Resolu] [phpBB] Ajouter colonne "Nb de sujets" dans memberlist.php[Résolu]scrollbar en haut de la div, Possible?
[RESOLU] Saut de champs lors de l'appui sur Entree[RESOLU] Détail qui coince sur un batch simple
(résolu)redirection immédiate[resolu] Dimensionnement dynamique d'une frame
[Résolu][HTML/CSS] Selecteur d'elements pere-fils + table[MySQL] Error : 2013 C'est quoi ça ? [Resolu]
Plus de sujets relatifs à : [C,C++] Désactiver warning (Résolu)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR