0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 9
|
|
1 | |
непонятня смысловая нагрузка (#define _In_)01.11.2013, 14:03. Показов 2971. Ответов 37
Метки нет (Все метки)
#define _In_
SWITCH_DECLARE(const switch_state_handler_table_t *) switch_core_get_state_handler(_In_ int index); Не понятно зачем объявляется _In_ и какую смысловую нагрузку он несет во входном параметре (_In_ int index)
0
|
01.11.2013, 14:03 | |
Ответы с готовыми решениями:
37
смысловая задача Как реализовать директиву #define для создания шаблона отпределения #define ? Скрытие столбцов. Ошибка App-define od obj-define error Смысловая задача на геометрическую прогрессию |
Неэпический
|
|
01.11.2013, 15:10 | 24 |
имхо, основной недостаток в том, что пишем один код, а на вход компилятору попадает уже измененный и это может стать источником трудноуловимых ошибок.
Не по теме: Добавлено через 2 минуты Если не ошибаюсь, то в C99 уже был inline
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
||||||
01.11.2013, 15:13 | 25 | |||||
и это тоже
поставь случайно в макросе точку с запятой, я часто их на "автомате" ставлю. компилятор даст ошибку в строке включения макроса а не в определении
0
|
castaway
|
01.11.2013, 15:15
#26
|
2
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
01.11.2013, 15:40 | 27 |
Обычно одного раза достаточно на такое напороться, понять что к чему и в другой раз уже быстро исправить ошибку. Хотя лучше использовать const.
Собственно если вместо директив препроцессора можно использовать конструкции языка их и следует использовать.
0
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
01.11.2013, 16:53 | 29 |
Я от щас книгу почитываю http://www.ozon.ru/context/detail/id/18817437/ , и там говориться, дословно не помню, но вроде как есть люди которые против макросов, макросы не нужно использовать и всякая фигня, а вы откройте любой файл заголовочный и посмотрите сколько там макросов, как говориться время поставит всех на свои места и те кто так говорил типо проехали, макросы широко используются и лучше раз выучить тему и потом уже не делать ошибки. Типо макрос как бы сильный инструмент в принципе если с умом им пользоваться так оно и есть, хотя бы использовать в качестве DEBUG уже сила. Я от например уже 1.5 к строк написал и ввел переменную int debug и каждый раз ее проверял если true то выполняю определенный код, а щас поисправлял все на #define DEBUG #ifdef DEBUG #endif. Просто если в программе этих if(debug) там штук 5 то ничего, а если их сотни, то это значительно замедлит программу.
Добавлено через 3 минуты Автор короче пропагандирует макросы использовать, да я думаю не нужно цуратса их использовать.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
|
01.11.2013, 16:59 | 30 |
слишком категоричное утверждение
есть например когда без макроса никуда условная компиляция например ,одну из них ты привел а если код пишем мультиплатформенный и определенные действия нужны для линукс а другие для винды как тут без макросов? каждый раз код переписывать другое дело что макросы не нужны для констант и встраиваемых функциях
1
|
Ушел с форума
|
|
01.11.2013, 17:08 | 31 |
+1
Макросы иногда помогают расширить язык. То есть, сделать такую вещь, которая чистым синтаксисом или нереализуема вообще, или приводит к нагромождениям лишних сущностей. Пример такого макроса - BOOST_SCOPE_EXIT и его аналоги. Удобная RAII-обертка для всего на свете, легко читается, вероятность накосячить минимальна. Без этой возможности пришлось бы на каждый охраняемый ресурс заводить свой отдельный класс, или выдумывать какой-нибудь хитроумный шаблон с параметризацией по способу удаления объекта...
0
|
Croessmah
|
01.11.2013, 19:04
#36
|
0
|
Ушел с форума
|
|
01.11.2013, 19:16 | 37 |
Вот еще занятная статейка по теме:
C Preprocessor tricks, tips, and idioms https://github.com/pfultz2/Clo... and-idioms
0
|
castaway
|
01.11.2013, 19:26
непонятня смысловая нагрузка (#define _In_)
#38
|
0
|
01.11.2013, 19:26 | |
define define #define c :: #define Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |