Visual Studio C++ 2008 / 2010 - break on float NaN

后端 未结 4 1619
一向
一向 2020-12-13 19:02

Is there any way to set up Visual Studio (just upgraded from 2008 to 2010) to break, as if an assertion failed, whenever any floating point number becomes NaN, QNAN

4条回答
  •  悲&欢浪女
    2020-12-13 19:36

    1) Go to project option and enable /fp:strict (C/C++ -> Code Generation -> Floating Pint Model).

    2) Use _controlfp to set the floating-point control word (see code below).

    #include 
    unsigned int fp_control_state = _controlfp(_EM_INEXACT, _MCW_EM);
    
    #include 
    
    int main () {
    
        sqrtf(-1.0);    // floating point exception
    
        double x = 0.0;
        double y = 1.0/x;   // floating point exception
    
        return 0;
    }
    

提交回复
热议问题