В ядре Linux, there can be found a line of code, который выглядит излишним для меня:Почему ядро Linux #define символ как сам?
#define __arch_swahb32 __arch_swahb32
Какова цель идиомы, как это?
В ядре Linux, there can be found a line of code, который выглядит излишним для меня:Почему ядро Linux #define символ как сам?
#define __arch_swahb32 __arch_swahb32
Какова цель идиомы, как это?
Рассмотрим следующий код:
#ifdef foo
foo();
#endif
Если вы хотите сниппет, как выше, чтобы вызвать функцию foo
, вам нужно определить foo
. Однако, если вы просто
#define foo
то имя функция foo
будут заменены пустым маркером, а первый фрагмент код препроцессор для всего ();
. Если, однако, вы
#define foo foo
тогда первый фрагмент будет предобработки в foo();
как положено.
Trick, котор нужно обеспечить, что #if defined(__arch_swahb32)
проходит, но не заменяет. (Часто используется для реализации макро-функций типа)
благодарим вас за ответ! – IljaBek
хорошо, это хороший пример! Спасибо – IljaBek