Astuce pour éviter warning

Le
Pascal
Bonjour,

Je cherche une astuce pour éviter le warning qui dit que mon param est
déclaré mais jamais utilisé (ce qui est vrai bien sur)

Voici mes déclarations

typedef struct
{
SBYTE const *cde;
BYTE NumCde;
void (*near fct)(BYTE adr,BYTE dir, BYTE numcde, WORD *param);
}CdeRS485;

void fct1(BYTE adr, BYTE dir,BYTE numcde, WORD *param)
{
code qui n'utilise pas param => WARNING
}

void fct2(BYTE adr, BYTE dir,BYTE numcde, WORD *param)
{
code qui utilise param => pas de warning
}

Mis à part le fait d'assigner dans fct1une valeur à param y a t'il un moyen
d'éviter ce warning?

Merci pour vos lumières.

P.S : le code tourne sous un micro contrôleur 16bits donc si il y a un moyen
il ne faut pas que ca fasse perdre du temps au micro
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
Pierre Maurette
Le #827553
Bonjour,

Je cherche une astuce pour éviter le warning qui dit que mon param est
déclaré mais jamais utilisé (ce qui est vrai bien sur)

Voici mes déclarations

typedef struct
{
SBYTE const *cde;
BYTE NumCde;
void (*near fct)(BYTE adr,BYTE dir, BYTE numcde, WORD *param);
}CdeRS485;

void fct1(BYTE adr, BYTE dir,BYTE numcde, WORD *param)
{
code qui n'utilise pas param => WARNING
}

void fct2(BYTE adr, BYTE dir,BYTE numcde, WORD *param)
{
code qui utilise param => pas de warning
}

Mis à part le fait d'assigner dans fct1une valeur à param y a t'il un moyen
d'éviter ce warning?

Merci pour vos lumières.

P.S : le code tourne sous un micro contrôleur 16bits donc si il y a un moyen
il ne faut pas que ca fasse perdre du temps au micro
Chez moi, une ligne comme:

param = param;
ou simplement:
param;
(et d'autres)
pour faire taire le warning sur *cette* variable, et ne génère pas de
code. A confirmer quand même, surtout si vous avez des volatile dans
votre code.
--
Pierre

Trognon Patrice
Le #827552
Pierre Maurette wrote:

Bonjour,

Je cherche une astuce pour éviter le warning qui dit que mon param est
déclaré mais jamais utilisé (ce qui est vrai bien sur)

Voici mes déclarations

typedef struct
{
SBYTE const *cde;
BYTE NumCde;
void (*near fct)(BYTE adr,BYTE dir, BYTE numcde, WORD *param);
}CdeRS485;

void fct1(BYTE adr, BYTE dir,BYTE numcde, WORD *param)
{
code qui n'utilise pas param => WARNING
}

void fct2(BYTE adr, BYTE dir,BYTE numcde, WORD *param)
{
code qui utilise param => pas de warning
}

Mis à part le fait d'assigner dans fct1une valeur à param y a t'il un
moyen d'éviter ce warning?

Merci pour vos lumières.

P.S : le code tourne sous un micro contrôleur 16bits donc si il y a un
moyen il ne faut pas que ca fasse perdre du temps au micro
Chez moi, une ligne comme:

param = param;
ou simplement:
param;
(et d'autres)
pour faire taire le warning sur *cette* variable, et ne génère pas de
code. A confirmer quand même, surtout si vous avez des volatile dans
votre code.
--
Pierre



ou t'as les pragma, mais ca c'est spécifique a chaque compilo.

t'es sur quel compilo ?

--
Cordialement,

Patrice Trognon
http://wwW.javadevel.com


Pierre Maurette
Le #827343
[...]
ou t'as les pragma, mais ca c'est spécifique a chaque compilo.

t'es sur quel compilo ?
J'avais C++Builder6 ouvert, donc Borland 5.6 (en C++). Et je n'avais pas

fait l'essai avec une fonction, mais une simple déclaration. En fait,
j'ai testé avec gcc et VC++8, en debug et release, et les résultats sont
variables. Parfois
int f(int a){return 0;}
ne warne pas.
Parfois, a = a; me laisse le warning ("....inutilisée"). Parfois, j'ai
un autre warning, "code has no effect".
--
Pierre

Mungo Deepdelver[CEA][SDF]
Le #827342
On Wed, 9 Mar 2005, Pascal wrote:

Bonjour,

Je cherche une astuce pour éviter le warning qui dit que mon param est
déclaré mais jamais utilisé (ce qui est vrai bien sur)



sous gcc il y a un flag "-Wno-unused", il y a peut etre l'equivalent
pour ton compilateur.

--

int main(){int j34,putchar();char t[]=":@abcdefghij-lmnopqrstuv"
"wxyz.n",*i="@jq:.pn.q:",*strchr();while(*i)
{j+=strchr(t,*i++)-t;j%=sizeof t-1;putchar(t[j]);}return 0;}

Pascal
Le #827338
Merci pour vos réponses.

J'ai effectivement la possibilité de faire taire le compilo par des pragma.
Mais cela veut dire que dans le cas où j'aurais un "vrai" warning du à une
erreur de ma part je ne le verrai plus :(
Enfin je vous remercie pour vos infos. Je vais essayer d'assigner la
variable comme le dis Pierre

Merci

"Mungo Deepdelver[CEA][SDF]" de news:
On Wed, 9 Mar 2005, Pascal wrote:

Bonjour,

Je cherche une astuce pour éviter le warning qui dit que mon param est
déclaré mais jamais utilisé (ce qui est vrai bien sur)



sous gcc il y a un flag "-Wno-unused", il y a peut etre l'equivalent
pour ton compilateur.

--

int main(){int j34,putchar();char t[]=":@abcdefghij-lmnopqrstuv"
"wxyz.n",*i="@jq:.pn.q:",*strchr();while(*i)
{j+=strchr(t,*i++)-t;j%=sizeof t-1;putchar(t[j]);}return 0;}

Emmanuel Delahaye
Le #847880
Pascal wrote on 09/03/05 :
void fct1(BYTE adr, BYTE dir,BYTE numcde, WORD *param)
{
code qui n'utilise pas param => WARNING


(void) param;

}


--
Emmanuel
The C-FAQ: http://www.eskimo.com/~scs/C-faq/faq.html
The C-library: http://www.dinkumware.com/refxc.html

"C is a sharp tool"

noone
Le #847879

(void) param;




merci pour cette astuce... très utile !

personellement je fais un peu de C++ et avec wxWidgets on a
WXUNUSED(param) pour régler ce genre de problème.

Mathieu Arnold
Le #847687
Pascal écrivait:
Bonjour,

Je cherche une astuce pour éviter le warning qui dit que mon param est
déclaré mais jamais utilisé (ce qui est vrai bien sur)

Voici mes déclarations

typedef struct
{
SBYTE const *cde;
BYTE NumCde;
void (*near fct)(BYTE adr,BYTE dir, BYTE numcde, WORD *param);
}CdeRS485;

void fct1(BYTE adr, BYTE dir,BYTE numcde, WORD *param)
{
code qui n'utilise pas param => WARNING
}

void fct2(BYTE adr, BYTE dir,BYTE numcde, WORD *param)
{
code qui utilise param => pas de warning
}

Mis à part le fait d'assigner dans fct1une valeur à param y a t'il un moyen
d'éviter ce warning?


Si c'est supporté par le compilateur __unused :
void fct1(BYTE adr, BYTE dir,BYTE numcde, WORD *param __unused)

--
Mathieu Arnold

Poster une réponse
Anonyme