Предположим, Вы разрабатываете некоторую библиотеку или фреймворк. Каким образом Вы организуете версионность для пользователя, чтобы он мог пользоваться этим знанием для каких-то своих целей (вывод в лог, оборачивание version-specific участков кода, etc)? Да, хотелось бы использовать схему "%major%.%minor%.%patch%", но с удовольствием выслушаю Ваши идеи и предложения.
Казалось бы, при таком подходе наилучшим решением можно считать использование двух констант -- для числового и строкового представлений текущей версии. Числовое можно будет использовать для оборачивания version-specific участков кода (например, при помощи #ifdef-ов), а строковое может быть более читаемым (может пригодиться, например, для вывода в лог).
А как при таком подходе поддерживать числовые версии до 1.0.0 (например, 0.0.1)?
Здравствуйте, FrozenHeart, Вы писали:
FH>Предположим, Вы разрабатываете некоторую библиотеку или фреймворк. Каким образом Вы организуете версионность для пользователя, чтобы он мог пользоваться этим знанием для каких-то своих целей (вывод в лог, оборачивание version-specific участков кода, etc)? Да, хотелось бы использовать схему "%major%.%minor%.%patch%", но с удовольствием выслушаю Ваши идеи и предложения.
FH>Казалось бы, при таком подходе наилучшим решением можно считать использование двух констант -- для числового и строкового представлений текущей версии. Числовое можно будет использовать для оборачивания version-specific участков кода (например, при помощи #ifdef-ов), а строковое может быть более читаемым (может пригодиться, например, для вывода в лог).
FH>
#define LIB_VERSION 1
FH>Так, что ли? Или есть какие-то идеи получше?
IBM WebsphereMQ:
...
#define MQCMDL_LEVEL_700 700 <-- версия 7.0.0
#define MQCMDL_LEVEL_701 701 <-- версия 7.0.1
#define MQCMDL_LEVEL_710 710 <-- версия 7.1.0
#define MQCMDL_LEVEL_711 711 <-- версия 7.1.1
#define MQCMDL_LEVEL_750 750 <-- версия 7.5.0
#define MQCMDL_LEVEL_800 800 <-- версия 8.0.0
#define MQCMDL_CURRENT_LEVEL 800
FH>А как при таком подходе поддерживать числовые версии до 1.0.0 (например, 0.0.1)?
Для проверки в коде я бы сделал что-то типа
#define LIB_VERSION = 1000000 * MAJOR_VERSION + 10000 * MINOR_VERSION + SUBMINOR_VERSION
(4 цифры под номер патча, 2 цифры под %minor%, все, что осталось — под %major%).
_____________________
С уважением,
Stanislav V. Zudin
Здравствуйте, FrozenHeart, Вы писали:
n>> чем n>> MAJOR_VERSION n>> MINOR_VERSION n>> SUBMINOR_VERSION n>> не нравится?
FH>Неудобно же в #ifdef использовать, по-моему, если надо, например, выделить код только для версий 1.0.5 — 1.1.0.