Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.205.56.209] |
|
Сообщ.
#1
,
|
|
|
В соседней теме я искал и нашел способ заставить компилятор ругаться на мой некорректный код.
Теперь вопрос немножко обратный. Как мне в одном (ну или нескольких, но не глобально) месте подавить вывод предупреждений. Типа "я знаю, что делаю, мамой клянусь - бага не будет, не предупреждай" Было бы вааще супер и мега, если бы такое решалось через атрибуты, но видимо пока это мечты! |
Сообщ.
#2
,
|
|
|
Предупреждения являются инициативой компилятора. Везде, где в Стандарте написано "no diagnostic required", компилятор имеет право промолчать.
Добавлено Так-то обычно везде есть implementation specific возможности. Ключики компиляции или там #pragma. У VS это /wXYYYY или #pragma warning(XXXX:YYYY) соответственно, где X (d) или XXXX (disable) говорит, что делать, а YYYY номер диагностики. Для потенциальной потери точности из-за сужающего преобразования это 4244. Добавлено #include <iostream> #include <limits> void Test(const uint16_t cho) { std::cout << "Okay: " << cho << std::endl; } int main() { uint64_t blin = std::numeric_limits<uint64_t>::max(); #pragma warning(push) #pragma warning(disable:4244) Test(blin); #pragma warning(pop) Test(blin); return 0; } Добавлено А static_cast<> не вариант разве? Тогда уж safe_cast самое то |
Сообщ.
#3
,
|
|
|
Цитата Qraizer @ А static_cast<> не вариант разве? Ну если гарантия есть, то да - это вариант. Оставлю тут, пусть будет пример для GCC: #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-variable" int x; // код с использованием x #pragma GCC diagnostic pop |