pragma Suppress (All_Checks)
действует на проверки во время выполнения .Не поможет тебе там.Оставьте это в покое, если только вы не сконцентрируетесь на производительности, но тогда у вас есть опция -p
, чтобы сделать это с помощью переключателей командной строки
Прагма Suppress подавляет проверки во время выполнения, генерируемые компилятором.Если проверка во время выполнения отключена, исключение может быть подавлено, что может привести к неопределенному поведению.Подавление прагмы используется на риск программиста.
Вам нужен оператор return
, но вы можете обернуть его вокруг 2 pragma warnings
операторов (случай, когда вы пытались его выключить и снова включить? работает)
pragma warnings(off,"unreachable code");
return This;
pragma warnings(on,"unreachable code");
обратите внимание, что текст является необязательным, но позволяет отфильтровывать другие предупреждения, которые могут возникнуть (при необходимости).Это лучше, так как отключение всех предупреждений обычно является плохой практикой.
Обратите внимание, что вам нужно снова включать предупреждения после выражения.
Автономная демонстрация.foo.adb
выглядит так:
package body foo is
function bar return integer is
begin
loop
null;
end loop;
pragma warnings(off,"unreachable code");
return 12;
pragma warnings(on,"unreachable code");
end bar;
end foo;
foo.ads
выглядит следующим образом:
package foo is
function bar return integer;
end foo;
Если я закомментирую строки pragma
:
$ gcc -c -gnatwe foo.adb
foo.adb:8:05: warning: unreachable code
без комментариевони удаляют предупреждение.