Ну, если добавить отсутствующие include, и исправить одну строчку в начале функции (вызывающую синтаксическую ошибку!)
OSVERSIONINFOEX osvi = {};
то все работает...Хоть debug, хоть release, хоть x86, хоть amd65. См. кусок с исправлениями (если объединить все в один файл).
Использовался CLion и MS BuildTools. 2019 года. Версия Windows такая же.
#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>
#include <windows.h>
bool getWindowsVersion(char* version);
int main(int argc, char* argv[])
{
// куча всяких printf();
#ifdef _WIN32
char version[2500];
if (getWindowsVersion(version))
printf("Operating System: %s\n", version);
#endif
#if defined(__USE_LARGEFILE) && defined(__USE_LARGEFILE64)
printf("\nLarge file available: %d offset\n", __USE_FILE_OFFSET64);
#endif
}
bool getWindowsVersion(char* version)
{
int index = 0;
OSVERSIONINFOEX osvi;