Нет, это не может работать как проверка во время выполнения , поскольку sizeof(int*)
фиксируется во время компиляции в точке, где вы выбираете компиляцию вашей программы как 32-битной или 64-битной, и после компиляции проверка будет иметь одинаковый фиксированный результат независимо от того, на какой платформе вы ее выполняете.
Однако, поскольку 64-разрядная программа не может работать на 32-разрядной платформе, вы обнаружите, что ваша проверка работает правильно без изменения как проверка во время компиляции:
Если вы скомпилируете свою программу как 64-битную, ваша программа будет использовать 64-битный API из-за кода выше и будет корректно работать на 64-битной версии Windows. Он вообще не будет работать в 32-битных окнах, поэтому у вас не будет возможности случайно использовать 64-битный API в 32-битной версии Windows.
v++ platform == 64-bit => sizeof(int*) == 8 => use 64-bit API
AND
( windows platform == 64-bit => 64-bit API works
OR
windows platform == 32-bit => program does not run )
Если вы компилируете свою программу в 32-битном режиме, ваша программа будет правильно использовать 32-битные API, которые будут работать на 64-битной платформе Windows в 32-битном режиме совместимости и, очевидно, работать на 32-битной. битовая платформа.
v++ platform == 32-bit => sizeof(int*) == 4 => use 32-bit API
AND
( windows platform == 64-bit => 32-bit API works using compatibility mode
OR
windows platform == 32-bit => 32-bit API works )
Если вы действительно хотите получить доступ к 64-битным API из 32-битной программы, я осмелюсь сказать, что для этого есть API, но я не уверен, что вы захотите.