Я прохожу через код ядра Linux. Я нашел макрос, определенный как #define __async_inline __always_inline
. Я искал __always_inline
, нашел следующее заявление #define __always_inline inline
. Мой вопрос, почему они должны так поступать? Они могут напрямую использовать inline
вместо этого макроса?Зачем определять макрос, который можно использовать напрямую? (Пожалуйста, см. Описание того, что именно я хочу)
ответ
Это распространенный способ параметризации кода, чтобы переместить какое-либо решение (в данном случае, использование inline
) в одно место, чтобы это решение изменилось (по какой-либо причине: разные компиляторы, разные параметры конфигурации, разные архитектуры), есть только одно место для изменения.
Код говорит следующее:
#ifdef CONFIG_HAS_DMA
#define __async_inline
#else
#define __async_inline __always_inline
#endif
Он самостоятельно объяснить. __async_inline
будет заменен на inline
, если CONFIG_HAS_DMA
не определен.
, но в моем случае нет таких условий – Chinna
@Chinna, где вы нашли это определение? http://lxr.free-electrons.com/ident?v=2.6.32;i=__async_inline –
- 1. Зачем делать разницу betwen typedef и определять структуру в моем случае? (См. Описание для чего я хочу)
- 2. Что именно делает этот макрос?
- 3. Что именно я использую?
- 4. Пожалуйста, обсудите, что и зачем использовать портлеты
- 5. Понимание того, что именно «я» означает
- 6. Зачем определять схему?
- 7. Зачем кому-то определять макрос C с неиспользуемыми аргументами/параметрами?
- 8. Sharepoint: SPAttachmentCollection - коллекция того, что именно?
- 9. Зачем определять макрос, если он еще не определен?
- 10. Зачем определять множественный импорт?
- 11. Зачем определять функцию внутри $()?
- 12. Зачем использовать HttpServletResponseWrapper vs расширение HttpServletResponse напрямую
- 13. Почему именно я хочу использовать WSDL для описания веб-сервиса?
- 14. Java EE: зачем использовать JTA напрямую?
- 15. Зачем определять пустую переменную?
- 16. Зачем использовать Azure SendGrid через SendGrid напрямую
- 17. Зачем использовать макрос для вызова функций
- 18. Java конструктор описание пожалуйста?
- 19. Я хочу получить файл журнала именно того, что делает мой скрипт Powershell?
- 20. Можно ли использовать макрос stringize?
- 21. ruby script описание пожалуйста
- 22. Можно ли указать, что я хочу увеличить?
- 23. Зачем нужен макрос offsetof?
- 24. Зачем использовать макрос в объявлении класса
- 25. Что именно означает ERROR_INVALID_ORDINAL?
- 26. Как добавить полный переход страницы? (См. Описание)
- 27. Regex: Есть ли что-то еще, что я должен использовать для достижения того, чего хочу?
- 28. Зачем мне нужно «блокировать копию», когда я хочу использовать блок?
- 29. Я хочу создать макрос Word для форматирования таблицы
- 30. Могу ли я использовать транзакции, чтобы убедиться, что результат моего запроса именно то, что я хочу, после остановки запроса?
Возможно, в будущем они могут добавить больше функциональности/свойства в макрос, а также иногда для проблем с переносимостью. –
, очевидно, 'inline' является стандартным только из версии языка C99', я предполагаю, что они сделали это, чтобы избежать жесткого кодирования ключевого слова внутри кодовой базы. – user2485710