Как исправить ошибки в функции, возвращающей указатель, указывающий на данные структуры - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь получить доступ к данным в функции типа структуры через указатель. Когда я делаю это, я получаю 3 ошибки

#79 expected a type specifier
#159 declaration is incompatible with previous "memcmp"

Заголовочный файл:

typedef struct 
{

   uint8 a[50];

   uint8 b;

   uint8 c;
} get;

.c файл:

main.c()
{

    get example[3];
    get* example(void)
      {
        uint_8 l_LoopCounter_u8;
        example1_st.a[l_LoopCounter_u8++] = data;
        example.b = data;
        example.c = data;
        return (void*)&example1_st ;
       }
}

1 Ответ

0 голосов
/ 26 января 2019

Вот код, который исправляет ошибки, о которых вы спрашиваете, и некоторые другие.Без MCVE трудно заставить его работать полностью.У вас есть некоторые изменения дизайна, чтобы функция работала с любыми переменными, не только глобальными.Создание вложенной функции не является хорошим способом сделать локальную переменную доступной в функции.Получите код, работающий с глобальной переменной, затем перейдите к ссылочным переменным call-by.++ указывает на более сложный план, которому вы следуете.Сделайте это позже.

get example1_st[3]; // changed to the obviously intended name,
// should fix 'declaration is incompatible with previous "memcmp"'
// made this a global, to keep it accessable from function,
// make the code work, then refactor to have the function work on
// variables via call-by reference parmeters

// avoid nested function definition
get* example(void)
{
    uint_8 l_LoopCounter_u8=0; // init index variable

    example1_st.a[l_LoopCounter_u8] = data; // removed ++, which is unnclear/risky here
    example1_st.b[l_LoopCounter_u8] = data;
    example1_st.c[l_LoopCounter_u8] = data;
    return &example1_st ; // no need to cast to void, type is correct
}

int main(void) //changed to a correct main function head,
// should fix "expected a type specifier"
{

   // note that your main function was functionally empty anyway...

}

Примечание:
Нет, я не проверял этот код.Было бы трудно из-за отсутствия MCVE от OP.
Это предназначено для решения проблем, а не для доставки рабочего кода для неизвестных целей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...