Задачи по языку С



         

Препроцессор 2.3


static char input[] = "\twich\tif?";

if( c

TAB включает "открытый" условный оператор. Поэтому после подстановки он "поглощает" оператор, следующий за ближайшим else.

Правило 4. Подстановка макроопределения должна быть законченной конструкцией языка С - выражением, оператором (без последней точки с запятой) или блоком.

В этой задаче трудность устраняется добавлением в определение TAB "пустого" оператора else.

О функциях и макроподстановках. Часто подпрограмму можно реализовать и с помощью функции, и с помощью макроподстановки. Преимущество использования макроподстановки в том, что программа работает быстрее, поскольку нет обращений к функциям. Использование же функции гарантирует, что не возникают всякие неприятные ситуации наподобие тех, которые рассматривались в предыдущих задачах. Кроме того, в случае функций, если они вызываются неоднократно, потребуется, вероятно, меньше памяти. Это приводит нас к заключительному правилу по использованию макроподстановок.

Правило 5. Макроопределение должно быть простым; если это не удается, используйте функцию.




Содержание  Назад