Автор оригинала: shai ben shalom.
X-Macros — это мощная техника, которая помогает нам уменьшить ошибки времени выполнения в программах C Купить с использованием возможностей препроцессора. Это намного более легче объяснить X-Macros на примере. Поэтому предположим, что в ваших программах у вас есть следующие enum —
У вас также есть функция, которая возвращает цвет автомобиля, который выглядит следующим образом —
Теперь предположим, что вам нужно добавить новый автомобиль в enum. Позвольте сказать, что новая запись Enum — Chevrolet. Вы должны обновить функцию GetCarname для поддержки этого нового типа. Если вы этого не сделаете, тогда, когда ваша программа вызывает GetCarkAme (Chevrolet), функция возвращает NULL, что может вызвать неопределенное поведение в программу.
Здесь приходит большое преимущество использования x-macros.i будет ddemosrate, как написать вышеприведенный пример, используя X-macros. Сначала мы объявляем следующий макрос в файле заголовка —
Далее мы объявляем наш Enum —
Посмотрите на новую декларацию Enum выше. На первый взгляд немного сложно. Препроцессор будет принимать только первый аргумент каждой Car_entry и поместить его в enum. поэтому enum будет выглядеть так после стадии предварительной обработки —
большой! Это первый шаг того, что мы хотели достичь. Далее мы пойдем в наш файл C и определите следующие макрос —
Опять же, после предварительной стадии предварительной обработки, приведенная выше переменная будет выглядеть следующим образом — теперь давайте ревертировать функцию GetCarname —
Вау, мы сократили длину функции на одну строку! Теперь, когда мы хотим добавить новую машину, мы просто добавляем новую строку в макрос Car_entries. Добавление строки к этому макросу, требует, чтобы вы установили имя enum, так и цвет автомобиля, и нет необходимости добавлять дополнительный код в любом другом месте! Так что придерживаюсь нашего первоначального примера, если бы я добавил Chevrolet в качестве автомобиля, я просто добавлю его в макрос Car_entries —
Это был небольшой вкус X-Macros. X-Macros могут быть очень полезными в создании простоты во многих других случаях. X-Macros могут показаться усердно в начале, но, как только вы привыкли к ним, вы найдуте их много.
Оригинал: «https://www.codementor.io/@shaibenshalom/x-macros-rtmfceex4»