а также 32-битная ОС из 64-битной ОС? Есть ли какой-нибудь #ifdef, который я могу использовать для определения фактической версии ОС и является ли она 32- или 64-битной?
Во время компиляции вы можете использовать макросы WINVER & _WIN64, хотя эта информация предназначена для целевых ОС, а не для компилируемой ОС.
WINVER
_WIN64
Во время выполнения вы можете использовать GetVersionEx для получения информации о версии ОС и IsWOW64Process для определения, работаете ли вы на 64 или 32-битной версии.*
GetVersionEx
IsWOW64Process