Могу ли я игнорировать предупреждения C4056 и C4756 от ODE после обновления до VC12?

После обновления нашей IDE с Visual Studio 2010 (VC10) до Visual Studio 2013 (VC12) наше использование dInfinityмакрос, определенный в Open Dynamics Engine (ODE), начал генерировать предупреждения компилятора:

C4056: переполнение в арифметике с плавающей точкой

C4756: переполнение в постоянной арифметике

В odeconfig.h (Ода)

#ifdef INFINITY
#define dInfinity INFINITY
#elif defined(HUGE_VAL)
#ifdef dSINGLE
#ifdef HUGE_VALF
#define dInfinity HUGE_VALF
#else
#define dInfinity ((float)HUGE_VAL)
#endif
#else
#define dInfinity HUGE_VAL
#endif
#else
#ifdef dSINGLE
#define dInfinity ((float)(1.0/0.0))
#else
#define dInfinity (1.0/0.0)
#endif
#endif

В math.h (VC12; Там есть комментарии из заголовочного файла, я их там не добавил.)

#define _HUGE_ENUF  1e+300  /* _HUGE_ENUF*_HUGE_ENUF must overflow */
#define INFINITY   ((float)(_HUGE_ENUF * _HUGE_ENUF))  /* causes warning
C4756: overflow in constant arithmetic (by design) */

Предыдущая версия, вероятно, использовала HUGE_VAL который не спам предупреждений.

C4756 кажется, происходит от простого использования в float а также C4056 кажется результатом неявного преобразования в double,

Могу ли я просто игнорировать эти предупреждения, включив odeconfig.h в #pragma warning push/popили действительно что-то плохое происходит?

редактировать:

После просмотра старой настройки использовалась предыдущая реализация HUGE_VAL определяется в math.h.

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]