Question en C : Warning à la con

Question en C : Warning à la con - Programmation

Marsh Posté le 01-12-2001 à 15:16:59    

J'ai la fonction suivante :
 
/* character-name table */
static struct cname {
        char *name;
        char code;
} cnames[] = {
        {"NUL",         '\0'},
        {"SOH",         '\001'},
        {"STX",         '\002'},
        {"ETX",         '\003'},
        {"EOT",         '\004'},
        {"ENQ",         '\005'},
        {"ACK",         '\006'},
        {"BEL",         '\007'},
        {"alert",       '\007'},
        {"BS",          '\010'},
        {"backspace",   '\b'},
        {"HT",          '\011'},
        {"tab",         '\t'},
        {"LF",          '\012'},
        {"newline",     '\n'},
        {"VT",          '\013'},
        {"vertical-tab",'\v'},
        {"FF",          '\014'},
        {"form-feed",   '\f'},
        {"CR",          '\015'},
        {"carriage-return",     '\r'},
        {"SO",                  '\016'},
        {"SI",                  '\017'},
        {"DLE",         '\020'},
        {"DC1",         '\021'},
        {"DC2",         '\022'},
        {"DC3",         '\023'},
        {"DC4",         '\024'},
        {"NAK",         '\025'},
        {"SYN",         '\026'},
        {"ETB",         '\027'},
        {"CAN",         '\030'},
        {"EM",          '\031'},
        {"SUB",         '\032'},
        {"ESC",         '\033'},
        {"IS4",         '\034'},
        {"FS",          '\034'},
        {"IS3",         '\035'},
        {"GS",          '\035'},
        {"IS2",         '\036'},
        {"RS",          '\036'},
        {"IS1",         '\037'},
        {"US",          '\037'},
        {"space",       ' '},
        {"exclamation-mark",    '!'},
        {"quotation-mark",      '"'},
        {"number-sign",         '#'},
        {"dollar-sign",         '$'},
        {"percent-sign",        '%'},
        {"ampersand",           '&'},
        {"apostrophe",          '\''},
       {"left-parenthesis",    '('},
        {"right-parenthesis",   ';)'},
        {"asterisk",            '*'},
        {"plus-sign",           '+'},
        {"comma",               ','},
        {"hyphen",              '-'},
        {"hyphen-minus",        '-'},
        {"period",              '.'},
        {"full-stop",           '.'},
        {"slash",               '/'},
        {"solidus",             '/'},
        {"zero",                '0'},
        {"one",                 '1'},
        {"two",                 '2'},
        {"three",               '3'},
        {"four",                '4'},
        {"five",                '5'},
        {"six",                 '6'},
        {"seven",               '7'},
        {"eight",               '8'},
        {"nine",                '9'},
        {"colon",               ':'},
        {"semicolon",           ';'},
        {"less-than-sign",      '<'},
        {"equals-sign",         '='},
        {"greater-than-sign",   '>'},
        {"question-mark",       '?'},
        {"commercial-at",       '@'},
        {"left-square-bracket", '['},
        {"backslash",           '\\'},
        {"reverse-solidus",     '\\'},
        {"right-square-bracket",']'},
        {"circumflex",          '^'},
        {"circumflex-accent",   '^'},
        {"underscore",          '_'},
        {"low-line",            '_'},
        {"grave-accent",        '`'},
        {"left-brace",          '{'},
        {"left-curly-bracket",  '{'},
        {"vertical-line",       '|'},
        {"right-brace",         '}'},
        {"right-curly-bracket", '}'},
        {"tilde",               '~'},
        {"DEL",                 '\177'},
        {NULL,                  0},
};
 
 
A la compil, gcc m'envoie :
 
cname.h:6: warning: initialization discards qualifiers from pointer target type
cname.h:7: warning: initialization discards qualifiers from pointer target type
cname.h:8: warning: initialization discards qualifiers from pointer target type
cname.h:9: warning: initialization discards qualifiers from pointer target type
cname.h:10: warning: initialization discards qualifiers from pointer target type
cname.h:11: warning: initialization discards qualifiers from pointer target type
 
<cut>
 
Une idée de comment faire ca de manière propre pour dégager le warning qui me dérange un peu ?


---------------
Protèges carnets personnalisés & accessoires pour bébé
Reply

Marsh Posté le 01-12-2001 à 15:16:59   

Reply

Marsh Posté le 01-12-2001 à 15:21:51    

tu le declare ou ta structure ?
 
essaie de faire char name;
sans le pointeur

Reply

Marsh Posté le 01-12-2001 à 15:27:48    

skylight a écrit a écrit :

tu le declare ou ta structure ?
 
essaie de faire char name;
sans le pointeur  




 
Ba tu la vois bien la déclaration :
 
 
static struct cname {  
       char *name;  
       char code;  
}
 
:lol:
Heu char name, c'est franchement pas une bonne idée sachant que ca comporte plusieurs caractères :D
Si tu veux faire raler le compilo c'est la meilleur solution :p


---------------
Protèges carnets personnalisés & accessoires pour bébé
Reply

Marsh Posté le 01-12-2001 à 15:32:17    

gcc --disable-warning prog
 
dsl ;)

Reply

Marsh Posté le 01-12-2001 à 15:33:00    

crétaing :D
L'option de warning qui crée ca c'est :
 
-Wwrite-strings


---------------
Protèges carnets personnalisés & accessoires pour bébé
Reply

Marsh Posté le 01-12-2001 à 15:35:34    

ethernal a écrit a écrit :

gcc --disable-warning prog
 
dsl ;)  




 
wesh wesh il a dit "propre" :D
 
joce > bah voui mais bon t ptet pas obliged d'utiliser les pointeurs :D moi ils me font chier + qu'autre chose alors je les utilise le moins possible (sauf poor les tableaux, pas le choix :D)

Reply

Marsh Posté le 01-12-2001 à 15:35:57    

oki j'ai compris, fallait mettre :
 
static struc cname {
    const char *name;
    char code;
}


---------------
Protèges carnets personnalisés & accessoires pour bébé
Reply

Marsh Posté le 01-12-2001 à 15:36:56    

tu sais pas quelle version de gcc t'a ?
 
paske moi a l'école on a une version buggée ....
genre
int N=1;
int Tablo[N];
 
 
et là, prootch, gcc t'envoie une grosse erreur pask'il veu pa ke tu déklare un tablo de dimension dynamique ...

Reply

Marsh Posté le 01-12-2001 à 15:37:27    

skylight a écrit a écrit :

 
 
wesh wesh il a dit "propre" :D
 
joce > bah voui mais bon t ptet pas obliged d'utiliser les pointeurs :D moi ils me font chier + qu'autre chose alors je les utilise le moins possible (sauf poor les tableaux, pas le choix :D)  




oui mais dans le cas d'une string, t un peu obliged, surtout dans ce cas là.
Sinon c'est sur j'aurais pu toujours faire :
 
char name[] = "gnagna";
 
mais là c'est pas possible.
Et puis si t'evites les pointeurs, arrète la programmation :D


---------------
Protèges carnets personnalisés & accessoires pour bébé
Reply

Marsh Posté le 01-12-2001 à 15:37:28    

joce a écrit a écrit :

oki j'ai compris, fallait mettre :
 
static struc cname {
    const char *name;
    char code;
}  




 
 
pkoi une constante ca virerais les warning ?  :heink:

Reply

Marsh Posté le 01-12-2001 à 15:37:28   

Reply

Marsh Posté le 01-12-2001 à 15:38:12    

Parce que :
 
       -Wwrite-strings
              Give string constants the type const char[length] so that copying the address of one  into  a  non-const
              char  * pointer will get a warning.  These warnings will help you find at compile time code that can try
              to write into a string constant, but only if you have been very careful about using  const  in  declara­
              tions  and  prototypes.   Otherwise, it will just be a nuisance; this is why we did not make `-Wall' re­
              quest these warnings.


---------------
Protèges carnets personnalisés & accessoires pour bébé
Reply

Marsh Posté le 01-12-2001 à 15:47:16    

skylight a écrit a écrit :

 
 
wesh wesh il a dit "propre" :D
 
joce > bah voui mais bon t ptet pas obliged d'utiliser les pointeurs :D moi ils me font chier + qu'autre chose alors je les utilise le moins possible (sauf poor les tableaux, pas le choix :D)  




 :heink:  :sarcastic:  
surtout jamais les utiliser c pas bien


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 01-12-2001 à 15:50:37    

deathsharp a écrit a écrit :

 
 :heink:  :sarcastic:  
surtout jamais les utiliser c pas bien  




 
 :lol:


---------------
Protèges carnets personnalisés & accessoires pour bébé
Reply

Marsh Posté le 01-12-2001 à 15:52:50    

:cry:

Reply

Marsh Posté le 01-12-2001 à 19:10:14    

skylight a écrit a écrit :

tu sais pas quelle version de gcc t'a ?
 
paske moi a l'école on a une version buggée ....
genre
int N=1;
int Tablo[N];
 
 
et là, prootch, gcc t'envoie une grosse erreur pask'il veu pa ke tu déklare un tablo de dimension dynamique ...  




 
qui est le plus buggué, du compilo ou de l'utilisateur, on se demande ... :sarcastic:
aller tente donc un const int N=1 pour avoir une idée de la réponse ;)

Reply

Marsh Posté le 01-12-2001 à 19:32:27    

mais si je declare N comme constante .. je poorai pas lui assigner une valeur par la suite ?

Reply

Marsh Posté le 01-12-2001 à 19:38:15    

skylight a écrit a écrit :

mais si je declare N comme constante .. je poorai pas lui assigner une valeur par la suite ?  




 
oui, si tu récupère son adresse mémoire et que tu écrit dedans via une autre variable qui pointe sur l'adresse mémoire.
 
Mais c'est une astucede programmeur-porc et a éviter au maximum. Si tu veux déclarer un char dynamique. déclar un pointeur char et ensuite tu lui appliques un malloc.

Reply

Marsh Posté le 01-12-2001 à 19:41:18    

gizmo a écrit a écrit :

 
 
oui, si tu récupère son adresse mémoire et que tu écrit dedans via une autre variable qui pointe sur l'adresse mémoire.
 
Mais c'est une astucede programmeur-porc et a éviter au maximum. Si tu veux déclarer un char dynamique. déclar un pointeur char et ensuite tu lui appliques un malloc.  




 
M'étonnerait qu'un bon compilo laisse passer ça, il me semble que au moins VC++ remplace les const par leur valeur comme des define, je peux me tromper m'enfin j'espere que c'est ça ...

Reply

Marsh Posté le 01-12-2001 à 19:55:26    

skylight a écrit a écrit :

mais si je declare N comme constante .. je poorai pas lui assigner une valeur par la suite ?  




toi ta louper bcp de truc dans la programmtion g l'impression...


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 01-12-2001 à 20:24:24    

t'aurais pas oublier un ; a la fin de ta structure
struct ... {
           };
 
 [:rick@r]

Reply

Marsh Posté le 01-12-2001 à 20:44:06    

deathsharp a écrit a écrit :

 
toi ta louper bcp de truc dans la programmtion g l'impression...  




 
g commencé le C ya 2 mois ... soit indulgent kan meme

Reply

Marsh Posté le 01-12-2001 à 20:46:28    

K
revoie les pointeurs, si t'arrive pas ou ke t'aime pas ca risque d'etre cho...
 
bonne chance pour la suite ;)


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 24-12-2001 à 15:23:31    

deathsharp a écrit a écrit :

K
revoie les pointeurs, si t'arrive pas ou ke t'aime pas ca risque d'etre cho...
 
bonne chance pour la suite ;)  




t'as entendu sky, revoie tes pointeurs :lol:


---------------
Protèges carnets personnalisés & accessoires pour bébé
Reply

Marsh Posté le 24-12-2001 à 19:54:31    

joce a écrit a écrit :

 
t'as entendu sky, revoie tes pointeurs :lol:  



pffffff meme pa drole :lol:


---------------
Dezintoxikation
Reply

Marsh Posté le 25-12-2001 à 16:27:01    

joce a écrit a écrit :

 
t'as entendu sky, revoie tes pointeurs :lol:  




fait pas semblant de pas comprendre... :fuck:


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 25-12-2001 à 16:31:32    

deathsharp a écrit a écrit :

 
fait pas semblant de pas comprendre... :fuck:  




nan c'est pas pour ca, c'est parce que l'autre jour y m'avait sorti sur ICQ qu'il faisait tout pour pas les utiliser parce que ct trop le bordel :lol:


---------------
Protèges carnets personnalisés & accessoires pour bébé
Reply

Marsh Posté le 25-12-2001 à 16:45:40    

moi g dit ca ???????????  :D


---------------
Dezintoxikation
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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