Je construis une fonction de validation pour un type de données d'énumération particulier. La fonction de validation retourne 0 (faux) ou 1 (vrai) si la chaîne passée est valide. En même temps, si la chaîne est valide, le sous-type d'énumération est alors rempli avec l'entrée correcte.Passer les énumérations par référence ... la valeur garbage retournée à
Comme le code l'indique, il remplit correctement le sous-type dans la fonction. J'imprime l'entrée à l'écran pour vérifier. Mais quand je reviens au principal (voir ci-dessous), j'obtiens une valeur de poubelle (parfois '11871397') quand j'imprime la chaîne.
J'ai même essayé ceci avec ou sans déclarer subType comme const. J'ai un certain nombre d'autres fonctions de validation écrites comme ceci et elles traitent toutes le type de référence correctement, ce qui m'a amené à croire que c'est un problème avec l'énumération.
int val_subscriberType (char str[], const enum ns1__subscriberType *subType)
{
if (strcmp(upStr, "PREPAID") == 0)
{
enum ns1__subscriberType subType = ns1__subscriberType__prepaid;
printf("SubscriberFunction: %d \n", subType);
return 1;
}
else if (strcmp(upStr, "POSTPAID") == 0)
{
enum ns1__subscriberType subType = ns1__subscriberType__postpaid;
printf("SubscriberFunction: %d \n", subType);
return 1;
}
return 0;
}
principal
char *recRetTest = "aggressive";
enum ns1__recurrentRetrySchemaType recRet;
if (val_recurrentRetrySchemaType (recRetTest, &recRet))
{
printf ("\nRecurrent Retry Schema main: %d \n", recRet);
}
PS J'ai pris le code supplémentaire où je convertir la chaîne en majuscules, etc.