ADA - предварительные и последующие условия не работают?

Я пытаюсь учиться на своих собственных предварительных и почтовых условиях в ada.


person catrev    schedule 24.03.2020    source источник
comment
Определенно стоит упомянуть вашу ОС, версию компилятора и будь то FSF или Adacore (если Gnat). Очевидно, что компиляторы, предшествующие Ada-2012, не будут поддерживать это.   -  person user_1818839    schedule 24.03.2020
comment
Я использую онлайн-компилятор jdoodle, это проблема?   -  person catrev    schedule 24.03.2020
comment
Я восстановил содержание вопроса. Вандализм снижает его ценность для других.   -  person user_1818839    schedule 24.03.2020
comment
значения A и B изменяются предварительным/постусловием - это было бы невероятно плохой идеей, даже если бы она была написана правильно. (a) вы не должны никогда помещать код, влияющий на результат, в условие pre/post, как вы видели, (b) это действительно очень затрудняет понимание того, что происходит, жизнь и так достаточно тяжела   -  person Simon Wright    schedule 24.03.2020
comment
В настоящее время вопрос в том, что я пытаюсь изучить свои собственные предварительные и почтовые условия в ada. кажется, что многое отсутствует и довольно бесполезно. Это нормально ? (продолжается модерация?)   -  person LoneWanderer    schedule 17.04.2020


Ответы (1)


Если вы используете GNAT (который выглядит так, как будто он используется по умолчанию для jdoodle), вам необходимо включить утверждения. Добавьте -gnata в качестве параметра командной строки.

РЕДАКТИРОВАТЬ: я мало что знаю о jdoodle, но, похоже, он не может принимать аргументы компилятору, только при запуске вашей программы...

Вместо этого вы можете добавить pragma Assertion_Policy в свою программу, например:

procedure Tp2q4 is
   pragma Assertion_Policy(Check);

   --...
person egilhh    schedule 24.03.2020