Рубрики
Uncategorized

X- Макрос

мощные X-macros

Автор оригинала: shai ben shalom.

X-Macros — это мощная техника, которая помогает нам уменьшить ошибки времени выполнения в программах C Купить с использованием возможностей препроцессора. Это намного более легче объяснить X-Macros на примере. Поэтому предположим, что в ваших программах у вас есть следующие enum —

enum1.png

У вас также есть функция, которая возвращает цвет автомобиля, который выглядит следующим образом —

enum2.png.png.

Теперь предположим, что вам нужно добавить новый автомобиль в enum. Позвольте сказать, что новая запись Enum — Chevrolet. Вы должны обновить функцию GetCarname для поддержки этого нового типа. Если вы этого не сделаете, тогда, когда ваша программа вызывает GetCarkAme (Chevrolet), функция возвращает NULL, что может вызвать неопределенное поведение в программу.

Здесь приходит большое преимущество использования x-macros.i будет ddemosrate, как написать вышеприведенный пример, используя X-macros. Сначала мы объявляем следующий макрос в файле заголовка —

macro.png.png.

Далее мы объявляем наш Enum —

macro2.png.png.png

Посмотрите на новую декларацию Enum выше. На первый взгляд немного сложно. Препроцессор будет принимать только первый аргумент каждой Car_entry и поместить его в enum. поэтому enum будет выглядеть так после стадии предварительной обработки —

большой! Это первый шаг того, что мы хотели достичь. Далее мы пойдем в наш файл C и определите следующие макрос —

Macro3.png

Опять же, после предварительной стадии предварительной обработки, приведенная выше переменная будет выглядеть следующим образом — теперь давайте ревертировать функцию GetCarname —

var3.png.png.png
var1.png.png.png.png

Вау, мы сократили длину функции на одну строку! Теперь, когда мы хотим добавить новую машину, мы просто добавляем новую строку в макрос Car_entries. Добавление строки к этому макросу, требует, чтобы вы установили имя enum, так и цвет автомобиля, и нет необходимости добавлять дополнительный код в любом другом месте! Так что придерживаюсь нашего первоначального примера, если бы я добавил Chevrolet в качестве автомобиля, я просто добавлю его в макрос Car_entries —

Macro4.png.png.

Это был небольшой вкус X-Macros. X-Macros могут быть очень полезными в создании простоты во многих других случаях. X-Macros могут показаться усердно в начале, но, как только вы привыкли к ним, вы найдуте их много.

Оригинал: «https://www.codementor.io/@shaibenshalom/x-macros-rtmfceex4»