Почему в исходном коде Doom есть встроенное определение #define ID_INLINE?

0

В исходном коде Doom 3 вместо inline используются макросы ID_INLINE, которые объявляются как #define ID_INLINE inline. Какая причина заключается в использовании этого макроса вместо простого встроенного?

  • 1
    Потому что тогда вы можете отключить все функции, изменив одну строку кода?
  • 0
    @OliCharlesworth Ваш комментарий на самом деле кажется довольно хорошим ответом на мой вопрос.
Теги:
inline
c-preprocessor
macros

2 ответа

3
Лучший ответ

По той же причине многие другие программные пакеты используют "встроенный макрос". Он служит двум целям:

  1. Это дает программисту одно простое место, чтобы "отключить всю инкрустацию" (что очень полезно иногда при отладке вещей), - и вы можете сделать это "для каждого файла", выполнив #undef ID_INLINE а затем #define ID_INLINE - или измените общий макрос чтобы повлиять на весь проект.
  2. Некоторые (старые) компиляторы не поддерживают стандартное ключевое слово inline, или вам может понадобиться использовать специальную магию, чтобы убедить компилятор в встроенных функциях. Поэтому использование "встроенного макроса" позволяет изменить его для всего проекта (по крайней мере, если программисты следуют стандарту кодирования).

С современными компиляторами, безусловно, главное.

0

Единственная причина для этого - иметь способ переопределить этот макрос следующим образом, возможно, для целей отладки:

#define ID_INLINE

Ещё вопросы

Сообщество Overcoder
Наверх
Меню