-
- Этот вопрос я тоже не понял, но схитрил и проверил компилятором.
Получил то же самое, но без защитной обёртки (без подавления
ошибок). Вот так выглядит вызов после препроцессора: teap0t(1629 знак., 25.09.2020 09:08 - 09:16)
- (void)0 - пустое выражение, хак, компилер не генерирует код. Макро
можно было просто сделать пустым и в локальном случае это может
сработать, но не во всех. Проблема будет там, где пустой макрос
будет включен в код. RxTx(412 знак., 25.09.2020 17:29)
- Получается как в известном анекдоте. "Я только час русский, но как же я вас жидов ненавижу!" Только, панимаешь, нАчал, и на тебе! "Семантика", ёшкин кот! Этот херов (void)0 не я придумал. Я ещё маленький. Я честно всё списал у ST и по вами же подсунутой (о боги! сколько коварства!) ссылке на материал по макросам. - teap0t(25.09.2020 20:02 - 26.09.2020 08:00, ссылка)
- Кстати, а вариант do ; while(0) не был бы лучше в качестве пустышки? - VLLV(26.09.2020 00:00)
- Я так понял, ему именно запятые между ассертами хотелось. Зачем --
непонятно. - SciFi(25.09.2020 09:09)
- Ага. Но я могу прикинуться шлангом и продемонстрировать исходник. - teap0t(25.09.2020 09:12)
- (void)0 - пустое выражение, хак, компилер не генерирует код. Макро
можно было просто сделать пустым и в локальном случае это может
сработать, но не во всех. Проблема будет там, где пустой макрос
будет включен в код. RxTx(412 знак., 25.09.2020 17:29)
- Этот вопрос я тоже не понял, но схитрил и проверил компилятором.
Получил то же самое, но без защитной обёртки (без подавления
ошибок). Вот так выглядит вызов после препроцессора: teap0t(1629 знак., 25.09.2020 09:08 - 09:16)