Я создаю функцию проверки для определенного типа данных перечисления. Функция проверки возвращает 0 (ложь) или 1 (истина), если переданная строка действительна. В то же время, если строка действительна, подтип перечисления затем заполняется правильной записью.
Как и код, он правильно заполняет подтип в функции. Я печатаю запись на экране для проверки. Но когда я возвращаюсь к главному (см. ниже), я получаю значение мусора (иногда «11871397»), когда печатаю строку.
Я даже пробовал это с объявлением подтипа как 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. Я убрал лишний код, где конвертирую строку в верхний регистр и т.д.