Ошибка в gcc / g ++? Инициализация с использованием списка инициализации члена для объекта, который еще не существует [дублировать]

Убедитесь, что сценарий содержит

<?php

перед кодом, который должен быть выполнен. Между <? и php в этом не должно быть пробелов.

5
задан Shafik Yaghmour 26 January 2015 в 19:06
поделиться

1 ответ

Это синтаксически корректно, так как точка объявления переменной находится перед ее инициализатором, и имя доступно в любом месте после этой точки. Это позволяет менее изворотливые инициализации, такие как

void *p = &p;

, который на законном основании использует имя (но не значение) инициализированной переменной.

Это поведение неверно, поскольку использование значения Неинициализированный объект дает неопределенное поведение. Это не ошибка, требующая диагноза (так как в целом может быть сложно или невозможно проанализировать поток программы, чтобы увидеть, был ли объект инициализирован), но, как вы заметили, многие компиляторы выдают предупреждение для простых случаев, подобных этому .

11
ответ дан Mike Seymour 21 August 2018 в 11:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: