Re: Проблема с #define
От: Vi2 Удмуртия http://www.adem.ru
Дата: 07.08.02 10:30
Оценка:
Здравствуйте rsn, Вы писали:

rsn>Есть большая программа с кучей версий, где номер версии определен примерно как

rsn>#define VER "1.0.1"
rsn>Надо написать функцию, тело которой меняеться в зависимости от номера версии,
rsn>то есть типа
rsn>#if VER == "1.0.1"
rsn>....//что-то пишем здесь
rsn>#else
rsn>....//что-то другое пишем здесь
rsn>#endif

rsn>Как вы понмаете это не компилируеться, так как сравнивать строки в препроцессоре нельзя.


rsn>Вариант присвоения переменной номера версии и последующее сравнение не проходит,

rsn>потому что некоторые глобалные переменные и функции появились в поздних версиях программы и при компиляции более ранней версии про эти функции ничего не известно...

rsn>Как же написать эту функцию, чтобы один раз вставил ее и все скомпилировалось на всех версиях программы?

rsn>А то множество тел функций в разные версии вставлять я уже замучился...

#define VERMAJOR 1
#define VERMINOR 0
#define VERSUBRELAESE 1

#define QUOTE2(a,b,c) #a "." #b "." #c
#define QUOTE(a,b,c) QUOTE2(a,b,c)

#define VER QUOTE(VERMAJOR,VERMINOR,VERSUBRELAESE)

#if VERMAJOR == 1 && VERMINOR == 0 && VERSUBRELAESE == 1
....//что-то пишем здесь
#else 
....//что-то другое пишем здесь
#endif
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.