zyc737347123
zyc737347123
一点疑问,如果是因为编译器优化把 c->top 缓存到寄存器了,那我将 c->top 修饰为 volatile 应该是可以解决这个问题的。但经过验证,仍然出现这个问题。gcc版本为4.8.4
If the correct value would cause overflow, plus or minus HUGE_VAL (HUGE_VALF, HUGE_VALL) is returned (according to the sign of the value), and ERANGE is stored in errno. If the...
测试用例里有一个就是underflow : TEST_NUMBER(0.0, "1e-10000"); /* must underflow */ 就是errno==ERANGE, return val 是0的情况。
个人理解:用p还有一个好处,如果解析出错,c->json不用回退。因为编译器不能确定c会不会变,每次改变c->json , 要对c寻址并改变对应地址中的值。而p是局部变量,有些编译器可能直接用寄存器存放p的值,所以对应的少了一条st命令