инициализатор структуры, определение типа с Visual Studio

В быстром:

self.view.endEditing(true)
5
задан David Cournapeau 30 June 2009 в 18:27
поделиться

3 ответа

Стандарт ANSI C (он же C89), 3.5.7:

Все выражения в инициализаторе для объекта, имеющего статическое хранилище duration или в списке инициализаторов для объект, который имеет агрегат или объединение тип должен быть константными выражениями .

Последняя часть этого ограничения была удалена в C99, которая не поддерживается должным образом в VS.

7
ответ дан 14 December 2019 в 04:45
поделиться

в VS 6.0 при компиляции с / W4 я получаю

предупреждение C4204: использовано нестандартное расширение: непостоянный агрегатный инициализатор

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

1
ответ дан 14 December 2019 в 04:45
поделиться

Отлично работает на моем G ++ 3.4.4 на Cygwin .

За исключением ':' в конце, требующего изменения на ';' .
И я изменил '__ int64' на 'long long' .


С моей более сильной предвзятостью к C для такого кода, я бы написал,

 rope z = *(rope *)&a;

, чтобы заставить его включить в компилятор C ++ : -) .
Но не делайте этого ...

Конечно, как Дэвид отмечает в своем комментарии, правильный путь - это

rope z; z.f = a;
0
ответ дан 14 December 2019 в 04:45
поделиться
Другие вопросы по тегам:

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