Дядя Миша писал: Вы возможно не задумывались, но это запрещённая конструкция по сути.
Недавно узнал что переменные в Си можно объявлять не только в начале функции но и в любом месте, как в плюсах, если поставить вот такие скобки. В коде не попадалось такое.
Дядя Миша писал: Очередная чумовая проверка компиляторов от дяди Мишы.
Вставьте куда-нибудь вне любой функции неименованый блок скобок
C++ Source Code:
{
}
И посмотрите как будет ругаться компилятор. Вы возможно не задумывались, но это запрещённая конструкция по сути. Неименованный блок скобок возможен только внутри тела функции, как subscope.
В яве таким образом обозначаются блоки инициализации. Статический вариант вызывается при инициализации класса в принципе, а нестатический - при создании каждого экземпляра. Удобно, на самом деле, если хочется запихнуть какую-то рутину вне конструктора
Crystallize писал: Недавно узнал что переменные в Си можно объявлять не только в начале функции но и в любом месте, как в плюсах, если поставить вот такие скобки. В коде не попадалось такое.
Да и без этих скобок можно в любом месте как в плюсах начиная с C99, но студия до недавних пор плохо умела в C99.
Добавлено 15-06-2022 в 23:58:
Цитата:
Дядя Миша писал: Дошло. Тут неинтуитивное поведение на самом деле.
Если мы пишем
C++ Source Code:
int foo[8] = { 0 };
У нас массив заполняется нулями. После чего мы вправе(?) ожидать что вот такая конструкция
C++ Source Code:
int foo[8] = { -1 };
Запишет везде -1, однако этого естественно не происходит.
Сама операция присовоения вызывает установку всех элементов массива в 0, кроме тех, для которых значения указаны явно. В первом случае явно указано значение для первого элемента, оно равно нулю, остальные равны нулю по дефолту, из-за чего и формируется ложный стереотип, будто задание еденичного значения забьёт все элементы этим числом. Но в реальности этого конечно не происходит.
В языке Pawn есть синтаксис с многоточием для ожидаемой инициализации всего массива одним значением:
C++ Source Code:
new arr[8] = {-1, ...} // -1, -1, -1, ..., -1
Правда там через это же многоточие можно и арифметические прогрессии устроить:
А чтож оно по твоему делает? Удаляет старый тип?
Using у меня ассоциируется с неймспейсами и тоже не создаёт ничего нового.
Добавлено 20-06-2022 в 09:17:
А typename это вообще для шаблонофф.
Я не намерен коверкать синтаксис, пока язык не будет завершен.
Пусть он для начала получит возможности на уровней той же MSVC 6.0.
По большей части, во всяком случае. А потом посмотрим.
Кое-что я с удовольствием возьму из свежих редакций.