Цитата(GetSmart @ Nov 17 2015, 02:44)

Разве в первом примере не нужны круглые скобки, окружающие блок с фигурными?
Нужны, ошибся
Цитата
И этот пример из серии за уши притягивания. В классическом Си такие значения хранились бы в переменных. В полноценном смысле константа - то, что расчитывается на этапе компиляции.
Что такое классический Си? Керниган и Ричи, первое издание?

Жизнь не стоит на месте. Там уже и атомики в стандарте появились, и bool, и константы времени исполнения. Конкретно эта штука - расширение gcc (в стандарте его нет)
Цитата
Во-вторых, инлайн честно может юзать локальные переменные вызывающей функции, только они должны передаваться через список аргументов функции. Это и стандартно и читабельно и безопасно.
Может, вот только писанины больше. Плюс мы имеет дополнительную лишнюю сущность - статическую функцию, которая дергается из одного места.
Цитата
Для макроса по-другому опять же бэд бэд стайл.
Это как? Даже если у макроса есть аргументы, то там просто текстовая подстановка, аргументы будут "прочитаны" в момент обращения.
Ну и кстати - пример с замыканием из плюсов - это как раз ваша полноценная функция, просто с упрощенным синтаксисом. Как и какие локальные переменные будут захвачены - можно настроить в широких пределах
Цитата(Arlleex @ Nov 16 2015, 23:05)

Неоднократно встречаю в проекте, что Keil подсвечивает некоторые #define красным крестиком, при наведении пишет undefined sybol. Но проект собирается. Не только #define, кстати, но и некоторые функции. Думаю и вы неоднократно замечали. Это, вообще говоря, как? Почему проект собирается, ведь это фатальная ошибка при сборке?
Кейлом не пользовался, но рискну предположить, что сборку делает компилятор, а данные для подсветки синтаксиса берутся из парсера самого кейла. Если этот парсер криво настроен (не видит каких-то инклюдов, предопределенных макросов и т.п.) или в нем есть баги - будут глюки с подсветкой и автокомплитом.