warning: passing argument 1 de fait de nombre entier à partir de pointeur sans cast [activé par défaut]
J'ai cette fonction:
VOID myFunc(INT start, INT end)
{
//statements
}
Je vais appeler ça comme:
myFunc (Arr[new_1].Msg,Arr[new_2].Msg);
Qui produit le message d'erreur:
warning: passing argument 1 de fait de nombre entier à partir de pointeur sans cast [activé par défaut]
Arr est une struct matrice et est définie globalement comme:
MY_STRUCT Arr[100];
MY_STRUCT est défini comme:
typedef struct MY_STRUCT {
INT Num;
MsgType *Msg;
} MY_STRUCT;
Quelqu'un pouvait m'aider à résoudre cet avertissement?
- Qu'est-ce que
.Msg
, est-ce qu'un pointeur? - Et quel est le type de
Arr[i].Msg?
MsgType
est un autrestruct
?- sa vous dit exactement ce que vous faites mal. Vous êtes de passage
Msg
, un pointeur. Ce n'est pas uneint
.
Vous devez vous connecter pour publier un commentaire.
Votre fonction attend
INT
arguments:Malheureusement, vous êtes en passant des choses comme
Arr[new_1].Msg
, qui est unMsgType
pointeur, d'où le message.Je soupçonne que vous devriez faire:
myFunc
que la réceptionint
VOID myFunc (MY_STRUCT start, MY_STRUCT end)
.Vous déclarez la fonction pour être de type int, mais vous êtes de passage du pointeur.
Essayer d'appeler la fonction comme ci-dessous
Vous n'avez pas besoin de type de fonte, déclarer votre fonction d'accepter Msg type et les appels comme d'habitude, et certainement vous avez besoin pour gérer cela dans la définition de la fonction
Changer votre définition de la fonction à
MsgType *
, passtruct MY_STRUCT *
.MsgType
est un typedef avait nom; à moins qu'il existe également une structure avec le même tag, vous ne pouvez pas être sûr questruct MsgType
existe - encore une fois, la fonction doit recevoirMsgType *
. Ne pas le préfixe "struct"· SiMsg
est déclarée commeMsgType *
, il suffit d'utiliser cela.