Этот код соответствует стандартам C++ (или C) ? gcc и comeau не ругаются, микрософтовские компиляторы ругаются. На стандарт смотрел, конкретно про этот случай ничего не увидел.
Здравствуйте, Беженарь Владимир Сергеевич, Вы писали:
БВС>
int v[10] = {};
БВС>Этот код соответствует стандартам C++ (или C) ? gcc и comeau не ругаются, микрософтовские компиляторы ругаются. На стандарт смотрел, конкретно про этот случай ничего не увидел.
8.5.1/1
An aggregate is an array or a class (clause 9) with no user-declared constructors...
8.5.1/8
An empty initializer-list can be used to initialize any aggregate. If the aggregate is not an
empty class, then each member of the aggregate shall be initialized with a value of the form T() (5.2.3),
where T represents the type of the uninitialized member.
БВС>>Этот код соответствует стандартам C++ (или C) ? gcc и comeau не ругаются, микрософтовские компиляторы ругаются. На стандарт смотрел, конкретно про этот случай ничего не увидел.
S>
S>8.5.1/1
S>An aggregate is an array or a class (clause 9) with no user-declared constructors...
S>
S>8.5.1/8
S>An empty initializer-list can be used to initialize any aggregate. If the aggregate is not an
S>empty class, then each member of the aggregate shall be initialized with a value of the form T() (5.2.3),
S>where T represents the type of the uninitialized member.
Здравствуйте, Беженарь Владимир Сергеевич, Вы писали:
БВС>
int v[10] = {};
БВС>Этот код соответствует стандартам C++ (или C) ? gcc и comeau не ругаются, микрософтовские компиляторы ругаются. На стандарт смотрел, конкретно про этот случай ничего не увидел.
Здравствуйте, Беженарь Владимир Сергеевич, Вы писали:
БВС>
int v[10] = {};
БВС>Этот код соответствует стандартам C++ (или C) ? gcc и comeau не ругаются, микрософтовские компиляторы ругаются. На стандарт смотрел, конкретно про этот случай ничего не увидел.
Здравствуйте, Беженарь Владимир Сергеевич, Вы писали:
БВС>
int v[10] = {};
БВС>Этот код соответствует стандартам C++ (или C) ? gcc и comeau не ругаются, микрософтовские компиляторы ругаются. На стандарт смотрел, конкретно про этот случай ничего не увидел.
int v[10] = { 0 };
It's kind of fun to do the impossible (Walt Disney)
Здравствуйте, Testus, Вы писали:
K>>А вот это вы зря, мало того что это microsoft-specific, и вообще не надо его использовать: http://blogs.msdn.com/oldnewthing/archive/2005/06/28/433341.aspx
T>Можно реализовать аналог на чистом С так, что бы было не только microsoft-specific.
А что, на чистом C int A[N] = { } не будет работать? Или int A[N] = { 0 }, чтобы старые MSVC не смущались.
Здравствуйте, Дмитрий Полищук, Вы писали:
ДП>Здравствуйте, Testus, Вы писали:
T>>Можно реализовать аналог на чистом С так, что бы было не только microsoft-specific.
ДП>Зачем?! Уже все готово: в memory.h лежит memset(void*,int,size_t). ДП>Вообще, ZeroMemory это заглушка для RtlZeroMemory, которая определна вот так:
ДП>
Здравствуйте, Roman Odaisky, Вы писали:
RO>А что, на чистом C int A[N] = { } не будет работать? Или int A[N] = { 0 }, чтобы старые MSVC не смущались.
Нет, синтаксис ISO C 90/99 не допускает такой конструкции (99:6.7.8/1):