Comment supprimer un "warning" lié au mot-clef "const"

Comment supprimer un "warning" lié au mot-clef "const" - C - Programmation

Marsh Posté le 29-06-2010 à 11:46:38    

Bonjour,
 
Comment supprimer ce message d'erreur lié à l'utilisation d'une variable "non-const" par une fonction prenant un paramètre "const".
La version de gcc utilisée est 4.1.2.
 
Merci,
 

Code :
  1. void
  2. fonction
  3. (
  4.    const char tab[3][3]
  5. )
  6. {
  7.    char c ;
  8.    c = tab[0][0];
  9. }
  10. int
  11. main
  12. (
  13.    int   argc,
  14.    char *argv[]
  15. )
  16. {
  17.    char tab[3][3] ;
  18.    fonction( tab ) ;
  19.    return 0 ;
  20. }


 
 


test.c: In function 'main':
test.c:21: attention : passing argument 1 of 'fonction' from incompatible pointer type


Message édité par slvn le 29-06-2010 à 11:47:22
Reply

Marsh Posté le 29-06-2010 à 11:46:38   

Reply

Marsh Posté le 29-06-2010 à 15:34:57    

Reply

Marsh Posté le 01-07-2010 à 10:47:14    

Bonjour,
 
Non ce n'est pas possible.  
Il faut garder "gcc", ainsi que les options qui affichent les warnings "-Wall".


Message édité par slvn le 01-07-2010 à 14:58:50
Reply

Marsh Posté le 01-07-2010 à 11:51:50    

La fonction demande un pointeur vers un tableau de 3 char constant, tu lui passe un pointeur vers un tableau de 3 char, ce n'est possiblie ni en C ni en C++.
 
On ne peut ajouter des const que pour des pointeurs, pas des tableaux ou les membres des structs (les regles sont differentes en C et en C++, plus permissives en C++ qu'en C).


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 06-07-2010 à 11:45:27    

Bonjour,
 
Pourtant un tableau est en quelque sorte un pointeur...
 
Si au lieu d'utiliser une double dimension, on utilise une simple dimension.
 
C'est à dire, passer un :

Code :
  1. char tab[3];

A une fonction qui accepte un "const" :

Code :
  1. void fonction(const char tab[3]);

Alors, cela ne produit pas d'erreur.
 
Un tableau en simple dimension ne pose pas de problème.
 
Ce qui sembler causer le message "warning", c'est la double dimension du tableau.

Reply

Sujets relatifs:

Leave a Replay

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