gcc peut-il faire ça ?

gcc peut-il faire ça ? - C - Programmation

Marsh Posté le 19-10-2003 à 12:17:37    

Salut à tous,
 
Aux gourous de gcc, y-a-t-il moyen de faire sortir à "gcc" un warning sur le code suivant (affectation d'un négatif dans une variable non signée) ?

Code :
  1. int tata;
  2. unsigned int toto;
  3. toto = -14;
  4. tata = -8;
  5. toto = tata;


Merci d'avance.


Message édité par Enidan le 19-10-2003 à 12:21:59
Reply

Marsh Posté le 19-10-2003 à 12:17:37   

Reply

Marsh Posté le 19-10-2003 à 12:27:33    

Pas à ma connaissance. IL ne fait des warnings que dans le cas de comparaisons entre signés et non signés.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 19-10-2003 à 12:32:58    

kadreg a écrit :

Pas à ma connaissance. IL ne fait des warnings que dans le cas de comparaisons entre signés et non signés.


Je viens d'essayer : meme pas.
 
Je compile avec ces options :
-Wall -Wshadow -ansi -pedantic -c

Reply

Marsh Posté le 19-10-2003 à 12:36:52    

-Wconversion

Reply

Marsh Posté le 19-10-2003 à 12:43:17    

Taz a écrit :

-Wconversion


 
Merci Taz !
Par-contre, ça ne résoud que la moitié du pb : toto=-14.
Le code toto=tata ne provoque toujours pas de warning !

Reply

Marsh Posté le 19-10-2003 à 12:55:58    

je crois qu'on ne peut pas. c'est une instruction légale en C. écume les ml pourvoir si y a des infos la dessus.

Reply

Marsh Posté le 19-10-2003 à 13:01:29    

Heu, c quoi les ml ?

Reply

Marsh Posté le 19-10-2003 à 13:02:09    

mailing lists

Reply

Marsh Posté le 19-10-2003 à 13:02:44    

OK, merci, je vais faire ça.
 
A+

Reply

Marsh Posté le 19-10-2003 à 14:48:44    

Enidan a écrit :

Salut à tous,
 
Aux gourous de gcc, y-a-t-il moyen de faire sortir à "gcc" un warning sur le code suivant (affectation d'un négatif dans une variable non signée) ?

Code :
  1. int tata;
  2. unsigned int toto;
  3. toto = -14;
  4. tata = -8;
  5. toto = tata;


Merci d'avance.
 


Peut etre qu'un outil a la lint te filerait les warnings necessaires.
A+,


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- No jab ? No job ! -- (╯°□°)╯︵ ┻━┻
Reply

Marsh Posté le 19-10-2003 à 14:48:44   

Reply

Marsh Posté le 19-10-2003 à 15:03:08    

oui,
 

[benoit@athlon tmp]$ cat cast.c
void f()
{
  int tata;
  unsigned int toto;
   
  toto = -14;
  tata = -8;
  toto = tata;
}
[benoit@athlon tmp]$ lint cast.c
LCLint 2.4b --- 18 Apr 98
 
cast.c: (in function f)
cast.c:6:3: Assignment of int to unsigned int: toto = -14
  To ignore signs in type comparisons use +ignoresigns
cast.c:8:3: Assignment of int to unsigned int: toto = tata
 
Finished LCLint checking --- 2 code errors found

Reply

Marsh Posté le 20-10-2003 à 08:46:24    

gilou a écrit :


Peut etre qu'un outil a la lint te filerait les warnings necessaires.


Oui, je sais.
C'est pour le boulot. On utilise Prolint. Le pb est qu'on nous impose de faire des casts explicites "partout". Sur le principe, ça se justifie, mais on en arrive à écrire des choses comme ça :

Code :
  1. unsigned int i;
  2. for (i=(unsigned int)0; i<(unsigned int)10; i++) {}


Ou encore :

Code :
  1. short tableau[] = { (short)1, (short)2 };


Et je cherche des arguments pour faire sauter la vérif dans ces cas-là ...

Reply

Marsh Posté le 20-10-2003 à 08:55:36    

0u et hop, magique !
 
par contre pour les shorts .... lis un peu la doc quand même, doit y avoir un truc de prévu

Reply

Marsh Posté le 20-10-2003 à 10:13:47    

Enidan a écrit :


Oui, je sais.
C'est pour le boulot. On utilise Prolint. Le pb est qu'on nous impose de faire des casts explicites "partout". Sur le principe, ça se justifie, mais on en arrive à écrire des choses comme ça :

Code :
  1. unsigned int i;
  2. for (i=(unsigned int)0; i<(unsigned int)10; i++) {}


Ou encore :

Code :
  1. short tableau[] = { (short)1, (short)2 };


Et je cherche des arguments pour faire sauter la vérif dans ces cas-là ...


Ah je vois. Bon, c'est sur que c'est lourd, mais c'est pas la mort.
A+,


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- No jab ? No job ! -- (╯°□°)╯︵ ┻━┻
Reply

Marsh Posté le 20-10-2003 à 11:09:14    

je vois pas l'interet .... c un peu debile quand meme non ?
 
enfin le short i = (short)4; ???? :heink:

Reply

Sujets relatifs:

Leave a Replay

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