mrjbom
@mrjbom

Как избавиться от warning C26812: Enum type VkResult is unscoped?

Приветсвую.
Я уже натыкался на этот вопрос, однако это не помогает мне.

Я включаю заголовки Vulkan таким образом:
#pragma warning(push, 0)
#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>
#pragma warning(pop)


И в следующей строке получаю предупреждение:
VkResult result = vkCreateInstance(&createInfo, nullptr, &instance);

Visual Studio 2019 постоянно подсвечивает эту строку, это очень сильно раздражает.

Как избавиться от этого? Совсем отключать этот тип предупреждений я не хочу.
  • Вопрос задан
  • 1008 просмотров
Решения вопроса 1
@MarkusD Куратор тега C++
все время мелю чепуху :)
Особенностью нестрогих перечислений является то, что все значения перечисления являются глобальными целочисленными константами подлежащего типа. Подлежащим по умолчанию является тип int.
Таким образом, вместо VkResult result можно написать int result в виду того, что перечисление VkResult является нестрогим.

С другой стороны, C26812 [?] относится к разделу Enum.3 из C++ Core Guidelines [?] и напрямую указывает на место определения нестрогого перечисления. К строке VkResult result = оно отношения не имеет.

Дополнительно. #pragma warning(push, 0) [?] не делает того, что ты от него ожидаешь.
Предупреждения подавлять стоит таким образом.
#pragma warning( push )
#pragma warning( disable: 26812 )
#include <GLFW/glfw3.h>
#pragma warning( pop )
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Может,
#include<vulkan.h>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы