#define не распознан библиотекой - PullRequest
0 голосов
/ 28 декабря 2018

Я строю проект библиотеки и тестовый проект для тестирования этой библиотеки.Я хочу, чтобы пользователь (AKA тестовый проект) мог определить некоторые вещи для библиотеки, но #define не распознается в моей библиотеке и просто выдает ошибку.

** Я собираю библиотекупроект как статическая библиотека, порядок сборки таков, что библиотека сначала строит, а потом тестовый проект, так как проект зависит от библиотеки.

В тестовом проекте я хочу, чтобы пользователь мог определить так (перед включением):

#define PUT_DEFINE_HERE

В библиотеке я просто проверяю:

#ifdef PUT_DEFINE_HERE
//Do some stuff
#endif

Как указано выше, библиотека не видит #define, определенный пользователем.Я пробовал кое-что с порядком сборки, но пока не повезло, есть идеи?

1 Ответ

0 голосов
/ 28 декабря 2018

Если вы хотите, чтобы библиотека «принимала» пользователя #define, проверка наличия PUT_DEFINE_HERE

#ifdef PUT_DEFINE_HERE
//Do some stuff
#endif

должна выполняться на рычаге заголовка, и только там

Во-вторых, пользовательский проект, который включает заголовок библиотеки, должен #define PUT_DEFINE_HERE до , включая заголовок библиотеки.

В качестве альтернативы, если такой параметр несовместим с дизайном библиотеки, тогда#define должен быть добавлен во время компиляции, например:

gcc -DPUT_DEFINE_HERE ...

В этом случае обязательно компилируйте каждый источник с -DPUT_DEFINE_HERE, когда это уместно.

...