Код ниже демонстрирует это
#include <float.h>
#include <stdint.h>
#pragma fenv_access(on) // apparently ineffective
int main(int argc, char **argv)
{
uint32_t cw;
cw = _controlfp(0,0); // cw = 0x0008001f
cw = _controlfp(_PC_24,_MCW_PC); // cw = SAME!
cw = _controlfp(_PC_53,_MCW_PC); // cw = STILL THE SAME!
return 0;
}
Мне нужно установить рабочую точность, так как от этого зависит много старого кода генерации сетки. Перед переходом на 64-битную версию я добавил fstcw [cur_cw]
и т. Д., И все было хорошо. Однако, поскольку vs2010 не поддерживает встроенную сборку для 64-битных целевых объектов, кажется, что единственное работоспособное решение, которое у меня есть, - это создать отдельный файл .asm для этой цели. Есть еще одна волшебная, не очень хорошо документированная опция компилятора, о которой я не знаю, которая заставит _controlfp сотрудничать?