Я создаю функцию проверки для определенного типа данных перечисления. Функция проверки возвращает 0 (ложь) или 1 (истина), если переданная строка верна. В то же время, если строка действительна, тогда подтип перечисления заполняется правильной записью.
Как код, он правильно заполняет подтип в функции. Я печатаю запись на экран, чтобы проверить. Но когда я возвращаюсь к основному (см. Ниже), я получаю значение мусора (иногда «11871397»), когда я печатаю строку.
Я даже пробовал это с или без объявления subType как const. У меня есть ряд других проверочных функций, написанных так, и все они корректно обрабатывают ссылочный тип, что привело меня к мысли, что это проблема с перечислением.
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;
}
Главная
char *recRetTest = "aggressive";
enum ns1__recurrentRetrySchemaType recRet;
if ( val_recurrentRetrySchemaType (recRetTest, &recRet))
{
printf ("\nRecurrent Retry Schema main: %d \n", recRet);
}
P.S Я вынул дополнительный код, в котором я преобразовал строку в верхний регистр и т. Д.