HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Флуд (https://hlfx.ru/forum/forumdisplay.php?forumid=11)
-- Заметки на полях (https://hlfx.ru/forum/showthread.php?threadid=5815)
Отправлено Crystallize 08-06-2022 в 16:16:
Цитата:
Дядя Миша писал:
Вы возможно не задумывались, но это запрещённая конструкция по сути.
Недавно узнал что переменные в Си можно объявлять не только в начале функции но и в любом месте, как в плюсах, если поставить вот такие скобки. В коде не попадалось такое.
Отправлено XaeroX 08-06-2022 в 16:42:
Crystallize
Но они будут видны только внутри этих скобок.
__________________
Отправлено Дядя Миша 08-06-2022 в 19:02:
Цитата:
Crystallize писал:
если поставить вот такие скобки
У меня есть именованный subscope, но я так и не придумал какой от него прок.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено KiQ 08-06-2022 в 20:33:
Цитата:
Дядя Миша писал:
Очередная чумовая проверка компиляторов от дяди Мишы.
Вставьте куда-нибудь вне любой функции неименованый блок скобок
C++ Source Code:
И посмотрите как будет ругаться компилятор. Вы возможно не задумывались, но это запрещённая конструкция по сути. Неименованный блок скобок возможен только внутри тела функции, как subscope.
В яве таким образом обозначаются блоки инициализации. Статический вариант вызывается при инициализации класса в принципе, а нестатический - при создании каждого экземпляра. Удобно, на самом деле, если хочется запихнуть какую-то рутину вне конструктора__________________
-Brain is dead-
Отправлено Crystallize 09-06-2022 в 02:43:
Цитата:
Дядя Миша писал:
У меня есть именованный subscope, но я так и не придумал какой от него прок.
Дополнительная разметка кода для чайников? Коммент для конкретного фрагмента кода?
Отправлено Дядя Миша 09-06-2022 в 06:14:
Цитата:
Crystallize писал:
Дополнительная разметка кода для чайников?
Ну, по нему можно делать поиск 
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено PRoSToTeM@ 15-06-2022 в 20:58:
Цитата:
Crystallize писал:
Недавно узнал что переменные в Си можно объявлять не только в начале функции но и в любом месте, как в плюсах, если поставить вот такие скобки. В коде не попадалось такое.
Да и без этих скобок можно в любом месте как в плюсах начиная с C99, но студия до недавних пор плохо умела в C99.
Добавлено 15-06-2022 в 23:58:
Цитата:
Дядя Миша писал:
Дошло. Тут неинтуитивное поведение на самом деле.
Если мы пишем
C++ Source Code:
У нас массив заполняется нулями. После чего мы вправе(?) ожидать что вот такая конструкция
C++ Source Code:
Запишет везде -1, однако этого естественно не происходит.
Сама операция присовоения вызывает установку всех элементов массива в 0, кроме тех, для которых значения указаны явно. В первом случае явно указано значение для первого элемента, оно равно нулю, остальные равны нулю по дефолту, из-за чего и формируется ложный стереотип, будто задание еденичного значения забьёт все элементы этим числом. Но в реальности этого конечно не происходит.
В языке Pawn есть синтаксис с многоточием для ожидаемой инициализации всего массива одним значением:
C++ Source Code:
new arr[8] = {-1, ...} // -1, -1, -1, ..., -1 |
Правда там через это же многоточие можно и арифметические прогрессии устроить:
C++ Source Code:
new arr[8] = {1, 2, ...} // 1, 2, 3, 4, 5, ..., 8 |
Отправлено Дядя Миша 16-06-2022 в 08:47:
PRoSToTeM@ я уже сделал заполнение одним значением через
C++ Source Code:
с выдачей предупреждения о nonstandard extension used.
Добавлено 16-06-2022 в 11:47:
Очередной прикол, лишний раз показывающий, что модификаторы типов контекст вообще не учитывают, по крайней мере в шестёрке.
C++ Source Code:
Попробуйте на остальных компиляторах. MSVC 6.0 это прекрасно собирает.
Впрочем собирается даже вот такое
C++ Source Code:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено PRoSToTeM@ 16-06-2022 в 11:41:
Цитата:
Дядя Миша писал:
PRoSToTeM@ я уже сделал заполнение одним значением через
C++ Source Code:
с выдачей предупреждения о nonstandard extension used.
Тоже неплохой вариант.
Цитата:
Дядя Миша писал:
C++ Source Code:
На gcc и clang ошибка, MSVC выдаёт варнинг.
Цитата:
Дядя Миша писал:
C++ Source Code:
Аналогично, на двух ошибка, в MSVC варнинг.
Ты можешь и сам проверять на этом godbolt.org, плюс ещё можно на en.cppreference.com посматривать описание языка с примерами.
Отправлено Дядя Миша 17-06-2022 в 09:50:
Вот еще любопытная шляпа:
C++ Source Code:
Скобки просто выбрасываются, т.е. это обычная функция.
А вот так
C++ Source Code:
разумеется уже ошибка. Указатель на функцию не ждёт объявления тела.
Добавлено 17-06-2022 в 12:50:
Возможно это какое-то историческое наследие - объявление имени функции в скобках.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено PRoSToTeM@ 17-06-2022 в 19:15:
Дядя Миша, это чтобы аналогично названный функциональный макрос не раскрывался (например, isdigit).
https://stackoverflow.com/questions...ction-name-mean
Отправлено Дядя Миша 17-06-2022 в 19:47:
Да уж 
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено PRoSToTeM@ 20-06-2022 в 01:19:
Цитата:
Дядя Миша писал:
Необязательно. Можно и так
C++ Source Code:
typedef shared predictable persistent vec3 worldpos; |
Блин, опять typedef с перепутанными аргументами. В плюсах же есть нормальный typedef:
C++ Source Code:
using worldpos = shared predictable persistent vec3; |
Правда ключевое слово не самое подходящее. Я бы рассмотрел такие варианты:
C++ Source Code:
typedef worldpos = shared predictable persistent vec3; |
C++ Source Code:
type worldpos = shared predictable persistent vec3; |
C++ Source Code:
typealias worldpos = shared predictable persistent vec3; |
C++ Source Code:
typename worldpos = shared predictable persistent vec3; |
Отправлено XaeroX 20-06-2022 в 01:51:
Лучше alias, да. Потому что typedef это довольно неудачное ключевое слово, оно не создает новый тип.
__________________
Отправлено Дядя Миша 20-06-2022 в 06:17:
Цитата:
XaeroX писал:
оно не создает новый тип.
А чтож оно по твоему делает? Удаляет старый тип? 
Using у меня ассоциируется с неймспейсами и тоже не создаёт ничего нового.
Добавлено 20-06-2022 в 09:17:
А typename это вообще для шаблонофф.
Я не намерен коверкать синтаксис, пока язык не будет завершен.
Пусть он для начала получит возможности на уровней той же MSVC 6.0.
По большей части, во всяком случае. А потом посмотрим.
Кое-что я с удовольствием возьму из свежих редакций.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'