определите в const int, но поместите значение в установленный заголовок - PullRequest
3 голосов
/ 19 декабря 2011

У меня есть библиотека C ++, которая выполняет числовую работу.Основным параметром является количество сегментов.Для скорости в 3 раза важен номер сегмента const, однако я хотел бы определить его во время компиляции, используя -DSEGMENTS 32.Заголовок выглядит так:

#ifdef SEGMENTS
const int segments = SEGMENTS
#else
const int segments = 20
#endif

Это работает.Однако программы, связывающиеся с этой библиотекой, не получают -DSEGMENTS, и поэтому segments всегда равно 20. Без const я знаю решение, но с не знаю.Я могу представить какой-нибудь трюк extern или установку заголовка после предварительной компиляции, если это возможно с помощью cmake.

1 Ответ

5 голосов
/ 19 декабря 2011

Если вы хотите, чтобы другие библиотеки принимали значение извне, вы должны объявить его как внешнее в заголовке:

extern const int segments;

Вы определяете его в одном файле кода (.cpp), как описано выше:

#ifdef SEGMENTS
const int segments = SEGMENTS
#else
const int segments = 20
#endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...