ошибка: неиспользуемая переменная (структура) - PullRequest
0 голосов
/ 09 июня 2018
error: unused variable 'part2' [-Werror,-Wunused-variable]

Ошибка возникает только для part2, хотя она также была инициализирована, просто другим способом.Это просто проблема компилятора?

int main(void)
{
    struct complex
    {
        int a;
        int b;
    };

    struct complex part1;
    part1.a = 2;
    part1.b = 3;

    struct complex part2 = {4, 5};

    struct complex part3 = {part3.a = 7, part3.b = 8};
}   

1 Ответ

0 голосов
/ 09 июня 2018

Как уже упоминалось в комментариях выше, part1 считается «использованным», поскольку вы присваиваете значения его полям (a и b) явно в следующих строках:

part1.a = 2;
part1.b = 3;

part2 никогда не используется, только инициализируется в строке:

struct complex part2 = {4, 5};

part3 более интересен, и я удивлен, что ваш компилятор не выдает ошибку.Делая следующее:

struct complex part3 = {part3.a = 7, part3.b = 8};

вы сначала присваиваете part3.a = 7 и part3.b = 8, затем результаты этих присваиваний используются для инициализации структуры (part3.a = 7 оценивается как 7, part3.b = 8 оценивается как 8).По сути, он становится следующим набором операторов:

part3.a = 7;
part3.b = 8;
struct complex part3 = {7, 8};

Я бы ожидал, что ваш компилятор выдаст ошибку, потому что вы пытаетесь присвоить значения полям part3 до того, как вы его создали.Это неопределенное поведение.

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