'g' используется в этой функции без инициализации [-Wuninitialized] - PullRequest
0 голосов
/ 06 мая 2020

Почему я получаю здесь ошибку:

#include <stdio.h>
#include <stdlib.h>

struct abc{
   char a;char b;
};

int main (void) {

   struct abc def;
   __typeof__(def)* g;
   g->a = 'a'; //error line

   return 0;
}

Это всего лишь предупреждение, но истинная ошибка - command terminated. Знаешь почему

1 Ответ

2 голосов
/ 06 мая 2020

Вы определили g как указатель на тип struct abc, но вы не установили этот указатель на нигде. Поэтому, когда вы пытаетесь разыменовать его, записывая в g->a, вы вызываете неопределенное поведение .

Вам нужно указать g где-то, возможно, на def.

__typeof__(def)* g = &def;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...