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

  FORUM HardWare.fr
  Programmation

  Question en C : Warning à la con

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Question en C : Warning à la con

n°77206
joce
Architecte / Développeur principal
"BugHunter"
Posté le 01-12-2001 à 15:16:59  profilanswer
 

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é
mood
Publicité
Posté le 01-12-2001 à 15:16:59  profilanswer
 

n°77209
skylight
Made in France.
Posté le 01-12-2001 à 15:21:51  profilanswer
 

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

n°77212
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 01-12-2001 à 15:27:48  profilanswer
 

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é
n°77215
ethernal
Chercheur de vérité...
Posté le 01-12-2001 à 15:32:17  profilanswer
 

gcc --disable-warning prog
 
dsl ;)

n°77216
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 01-12-2001 à 15:33:00  profilanswer
 

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


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°77217
skylight
Made in France.
Posté le 01-12-2001 à 15:35:34  profilanswer
 

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)

n°77218
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 01-12-2001 à 15:35:57  profilanswer
 

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


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°77219
skylight
Made in France.
Posté le 01-12-2001 à 15:36:56  profilanswer
 

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 ...

n°77220
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 01-12-2001 à 15:37:27  profilanswer
 

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é
n°77221
skylight
Made in France.
Posté le 01-12-2001 à 15:37:28  profilanswer
 

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:

mood
Publicité
Posté le 01-12-2001 à 15:37:28  profilanswer
 

n°77222
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 01-12-2001 à 15:38:12  profilanswer
 

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é
n°77223
deathsharp
Posté le 01-12-2001 à 15:47:16  profilanswer
 

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.
n°77224
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 01-12-2001 à 15:50:37  profilanswer
 

deathsharp a écrit a écrit :

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




 
 :lol:


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°77225
skylight
Made in France.
Posté le 01-12-2001 à 15:52:50  profilanswer
 

:cry:

n°77286
freewol
Ceci n'est pas une citation
Posté le 01-12-2001 à 19:10:14  profilanswer
 

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 ;)

n°77287
skylight
Made in France.
Posté le 01-12-2001 à 19:32:27  profilanswer
 

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

n°77289
gizmo
Posté le 01-12-2001 à 19:38:15  profilanswer
 

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.

n°77291
freewol
Ceci n'est pas une citation
Posté le 01-12-2001 à 19:41:18  profilanswer
 

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 ...

n°77299
deathsharp
Posté le 01-12-2001 à 19:55:26  profilanswer
 

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.
n°77308
rick@r
coin coin coin
Posté le 01-12-2001 à 20:24:24  profilanswer
 

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

n°77312
skylight
Made in France.
Posté le 01-12-2001 à 20:44:06  profilanswer
 

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

n°77313
deathsharp
Posté le 01-12-2001 à 20:46:28  profilanswer
 

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.
n°84085
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 24-12-2001 à 15:23:31  profilanswer
 

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é
n°84125
Autruche
bla bla bla....
Posté le 24-12-2001 à 19:54:31  profilanswer
 

joce a écrit a écrit :

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



pffffff meme pa drole :lol:


---------------
Dezintoxikation
n°84192
deathsharp
Posté le 25-12-2001 à 16:27:01  profilanswer
 

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.
n°84194
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 25-12-2001 à 16:31:32  profilanswer
 

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é
n°84200
Autruche
bla bla bla....
Posté le 25-12-2001 à 16:45:40  profilanswer
 

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


---------------
Dezintoxikation
mood
Publicité
Posté le   profilanswer
 


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

  Question en C : Warning à la con

 

Sujets relatifs
petite question phpPetite question niveau php
Une question ???[ASP] Petite question de bleu
[C et VB] question sur les DLL[web] une question toute simple : lien long dans un mail
Question en java !!![javascript] window.close(); => p'tite question ??
[MySQL] Warning: MySQL: Too many open links (1)Question simple : comment faire un simple bip en C
Plus de sujets relatifs à : Question en C : Warning à la con


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