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

 


Dernière réponse
Sujet : Question en C : Warning à la con
Autruche moi g dit ca ???????????  :D

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Autruche moi g dit ca ???????????  :D
joce

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:

deathsharp

joce a écrit a écrit :

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




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

Autruche

joce a écrit a écrit :

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



pffffff meme pa drole :lol:

joce

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:

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

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

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

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

freewol

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

gizmo

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.

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

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

skylight :cry:
joce

deathsharp a écrit a écrit :

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




 
 :lol:

deathsharp

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

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

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:

joce

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

skylight 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 ...
joce oki j'ai compris, fallait mettre :
 
static struc cname {
    const char *name;
    char code;
}
skylight

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)

joce crétaing :D
L'option de warning qui crée ca c'est :
 
-Wwrite-strings
ethernal gcc --disable-warning prog
 
dsl ;)
joce

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

skylight tu le declare ou ta structure ?
 
essaie de faire char name;
sans le pointeur
joce 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 ?

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)