2014-10-06 4 views
1

Недавно я включил/W4-предупреждения (MSVC), чтобы очистить бит в моем проекте и заметил, что GLM использует нестандартное расширение компилятора, защищенное #define GLM_HAS_ANONYMOUS_UNION, что вызывает очень длительное предупреждение блевать.Каков правильный способ настройки GLM

Существует механизм обнаружения функций компилятора, но я не могу полностью отключить расширения компилятора из-за зависимостей Windows SDK, а/Za в любом случае обескураживается. Итак, каков правильный способ отключить эту вещь в GLM? Я мог бы повредить #undef везде, где я использую GLM, но есть ли «подходящее» место для настройки этих вещей, например, отдельный файл конфигурации или что-то еще? Время от времени я обновляю GLM, поэтому я не хочу изменять это определение в коде GLM.

ответ

1

Я столкнулся с той же проблемой, что и вы. GLM попытается использовать все возможности вашего компилятора, и если он обнаружит VS, он будет использовать нестандартные расширения, чтобы сделать некоторые причудливые вещи.

Если вы хотите, чтобы эти нестандартные вещи, чтобы уйти (например, безымянные союзы/структуры) вы можете переключаться GLM в стандартном режиме с помощью

#define GLM_FORCE_CXX11 

только перед включением любого заголовка GLM.

я включил эту информацию из руководства по адресу: http://glm.g-truc.net/0.9.7/glm-0.9.7.pdf

В качестве альтернативы вы можете посмотреть в отключив это очень специфическое предупреждение с помощью прагмы предупредительного толчке

#pragma warning(push) 
#pragma warning(disable:4201) // suppress even more warnings about nameless structs 
#include<glm/glm.hpp> 
#pragma warning pop 
более

информации на https://msdn.microsoft.com/en-us/library/aa273936(v=vs.60).aspx

Смежные вопросы