да это ж в каждом учебнике написано. А если препроцессор поставит сам скобки - прибью !
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
DASM
04 июня 2003 г. 13:54
В ответ на:
Пользователям IAR C (AVR прежде всего). Только что обнаружили некорректность(?) компилятора.
отправлено Bill 04 июня 2003 г. 13:48
Составить ответ
|||
Конференция
|||
Архив
Ответы
Ну и зря.
—
Peter K.
(04.06.2003 14:22, 315 байт)
Всё правильно Дасм сказал - скобки надо ставить самому. Если их поставил препроцессор - это криминал..
—
Dr.Alex
(04.06.2003 14:35,
пустое
)
Ответ: если тебе хотелось b = c*(1+2) - так и нужно писать: #define multiplier (1+2)
—
...
(04.06.2003 14:26,
пустое
)
Ответ: Да тут не о чем спорить! Просто некоторые компляторы (старые) заключали тест макроопределения в скобки сами.
—
Bill
(04.06.2003 14:41, 201 байт)
И я согласен - и я бы убил бы. Слава тем компиляторам, которые НЕ ставят.
—
John
(04.06.2003 15:23,
пустое
)
Ответ: согласен с Дасмом - за такое убил бы.
—
...
(04.06.2003 15:00,
пустое
)
В этом что то есть... Но лучше бы этого не было. ! Все таки IAR в данном случае более прав.
—
Весельчак_У
(04.06.2003 14:54,
пустое
,
картинка
)
Да неправильно это! Откуда препроцессору знать, что вы хотите получить от него? Может вы специально скобки не поставили, а он их наставит!
—
Любящий С
(04.06.2003 14:47,
пустое
)
Приведите, плз, пример, когда может понадобиться такая ситуация
—
Peter K.
(04.06.2003 14:53, 102 байт)
Пример
—
Любящий С
(04.06.2003 15:16, 535 байт)
MFC - там примеров хоть отбавляй. И не говорите, что в Микрософте работают дураки.
—
...
(04.06.2003 15:06,
пустое
)
Ответ: в Микрософте работают дураки.
—
mihasic
(04.06.2003 15:12, 10 байт)
BTW там работает несколько моих друзей. Чем они Вам так не угодили?
—
Oldring
(04.06.2003 15:49,
пустое
)
Завидно, что ты там не работаешь?
—
...
(04.06.2003 15:13,
пустое
)
Ответ:
—
...
(04.06.2003 15:05,
пустое
)
Так вы же сами пример привели! А если так и надо? Если же проепроцессор скобки ставит, то такого выражения вообще никак получить нельзя - явное ущемление прав программёра..
—
Dr.Alex
(04.06.2003 14:55,
пустое
)
доказательства! в смысле какие компиляторы?
—
Внимательный препроцессор
(04.06.2003 14:47,
пустое
)
Ответ: DECUS Си для PDP-11
—
Bill
(04.06.2003 15:13,
пустое
)
Как правило, если программист дефайнит что-нибудь, то
—
Peter K.
(04.06.2003 14:46, 154 байт)
Ответ: зачем далеко ходить за примерами? Карта сообщений в MFC
—
...
(04.06.2003 15:02,
пустое
)
Подключите воображение. Макросы могут делать миллион полезных вещей.
—
Mik
(04.06.2003 14:54, 253 байт)
там точно хватает фигурных скобок?
—
Peter K.
(04.06.2003 15:07,
пустое
)
Первый макрос открывает {, второй закрывает }..
—
Dr.Alex
(04.06.2003 15:09,
пустое
)
нифига себе!
—
Peter K.
(04.06.2003 15:17,
пустое
)
о сколько нам открытий чудных... знаете, в си есть и другие интересные фичи :-)
—
Mik
(04.06.2003 15:24,
пустое
)
ехидничать некрасиво
—
Peter K.
(04.06.2003 15:50,
пустое
)
Конечно, я бы не стал так делать - дурной тон..
—
Dr.Alex
(04.06.2003 15:19,
пустое
)
не фига это не дурной тон, а защита от забывчивости. Если не сделать end_atomic прога не компильнется
—
DASM
(04.06.2003 15:37,
пустое
)
не говоря уже о том, что локальная переменная в середине функции может объявлена только после фигурной скобки.
—
Mik
(04.06.2003 15:39,
пустое
)
Даешь свободу программисту!
—
Peter K.
(04.06.2003 15:21,
пустое
)
Точно! Я про это и забыл, наверно потому что не люблю использовать макросы-блоки { // код; }
—
Dr.Alex
(04.06.2003 15:04,
пустое
)
Поймите, что скобки вы всегда можете руками поставить, а если всё-таки нужно без скобок? Этого никак не удастся добиться..
—
Dr.Alex
(04.06.2003 14:51,
пустое
)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru