erreur: total de la valeur utilisée lorsqu'un nombre entier a été prévu
Je vais avoir la suite de l'union
union data {
uint64_t val;
struct{
....
}
};
et j'ai une fonction
func(union data mydata[])
{
printf("%llu",(uint64_t)mydata[0]); //Here is the error
}
Quand je compile ce code, il donne d'erreur suivant
error: aggregate value used where an integer was expected
OriginalL'auteur Chinna | 2014-01-08
Vous devez vous connecter pour publier un commentaire.
Vous ne parviennent pas à accéder à un champ de l'indexation de l'union tableau:
mydata[0]
est une valeur de typeunion data
, et ne peut pas être lancée àuint64_t
.Vous avez besoin pour accéder à la bonne est membre de l'union:
pour sélectionner le
uint64_t
valeur. Pas besoin pour le casting.Également: Utilisation
PRIu64
de façon portable imprimer les valeurs de 64 bits, vous ne pouvez pas supposer que%llu
est le droit spécificateur de format.PRIu64
aussiVrai, j'ai édité cette correction dans la réponse. Merci.
Voter pour me prévient de l'existence de PRIu64 etc 🙂
OriginalL'auteur unwind
Le "sale" solution pour accéder au premier membre de la
n
ème de l'élément de la matrice de syndicats pointé parmydata
comme unint64_t
sans connaître son nom est:Cela fonctionne comme le premier membre de l'adresse d'une union ou structure est garanti d'être la même que l'adresse de l'union ou structure elle-même.
OriginalL'auteur alk