Здравствуйте 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