Замена констант #defines - PullRequest
       1

Замена констант #defines

4 голосов
/ 10 марта 2011

Я сейчас работаю над проектом (в C), и мы используем #defines для переменных по умолчанию.Эти переменные используются для компоновки структуры оперативной памяти с буферной батареей.

Теперь у нас разные клиенты, которые имеют разные макеты.В прошлом мы просто создавали новый программный продукт.
Теперь мы пытаемся избавиться от этой фрагментации и использовать одну и ту же базу кода.

У нас есть общая библиотека (используется во всех проектах), который имеет набор #define s и объявляет структуры.В настоящее время у нас есть специальный заголовочный файл (который содержит #defines для этого проекта), и он сравнивает их с #define s в общей библиотеке.Если он отличается, он выдает ошибку.

Мы хотим сохранить пользовательский заголовочный файл, но я пытаюсь найти решение для замены #define s в общей библиотеке.Одна идея состоит в том, чтобы заменить их на какую-то переменную, а другая - использовать какое-то определение препроцессора.

В прошлом мы использовали ifdef s, но код действительно загроможден и ужасен, поэтому мыпытаясь уйти от этого.

У кого-нибудь есть какие-нибудь решения?

Ответы [ 2 ]

4 голосов
/ 10 марта 2011

Вы могли бы все #define заключить в скобки

#ifndef HUI
# define HUI 1023
#endif

и затем поместите те, которые вы хотите изменить для отдельной компиляции, в командной строке компиляции с помощью -DHUI=1033.

2 голосов
/ 10 марта 2011

Быстрое решение: Поместите определения в отдельные заголовочные файлы. в основной файл включите заголовочные файлы через # fidef

Это будет работать, если количество различных заголовков не больше, чем handfull.

Другое решение: отдельные заголовочные файлы, как указано выше, но вместо выбора включений через ifdef поместите определения в отдельные папки и создайте отдельный файл make, где папка добавлена ​​в путь включения. -> держит код в чистоте, но теперь у вас есть #customer makefiles

...