Я сталкивался с проблемой _controlfp_s (Visual Studio 2008) или с моим пониманием. Я думал, что первый выходной параметр вернул контрольные флаги до применения изменений других параметров. Кажется, он возвращает флаги после изменения.
Итак, я подумал, что правильный способ его использования был следующим:
// Chop rounding
unsigned int old;
_controlfp_s(&old, _RC_CHOP, _MCW_RC);
// Do chopped math
// Restore
unsigned int unused;
_controlfp_s(&unused, old, _MCW_RC);
К сожалению, мне нужно сделать это:
// Save
unsigned int old1;
_controlfp_s(&old1, 0, 0);
// Chop rounding
unsigned int old2;
_controlfp_s(&old2, _RC_CHOP, _MCW_RC);
// Do chopped math
// Restore
unsigned int unused;
_controlfp_s(&unused, old1, _MCW_RC);
Я что-то пропустил? Кажется, довольно глупо это делать.
Кстати: я сообщил об этом MS, которая сказала, что они не могут понять это, и предложила предоставить видео, показывающее проблему. Да, верно.
Бред