微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

防止在 GNAT 中使用 Ada 202x

如何解决防止在 GNAT 中使用 Ada 202x

由于 Random(Generator,First,Last) 是在运行时实现的,GNAT 允许以下代码,但它不是 Ada 2012 的一部分。我是否可以导致它生成编译错误,因为它不应该可用?

with Ada.Text_IO; use Ada.Text_IO;
with Ada.Numerics.discrete_Random;

procedure Main is
   package Positive_Random is new Ada.Numerics.discrete_Random
     (Result_Subtype => Positive);
   Generator : Positive_Random.Generator;

   -- This should fail,since function isn't part of Ada 2012.
   Value : Positive := Positive_Random.Random (Generator,1,10);
begin
    Put_Line (Value'Image);
end Main;

这是我的 gpr 文件

project Default is

   for Source_Dirs use ("src");
   for Object_Dir use "obj";
   for Main use ("main.adb");

   package Compiler is
      for Switches ("ada") use ("-gnat12");
   end Compiler;

end Default;

解决方法

在我看来,the standard way 要做到这一点是添加 a global restriction

<nav id="site-navigation" class="main-navigation main-navigation--default">
  <div class="container">
    <a href="#" class="navigation-bar-toggle">
      <i class="ion-navicon-round"></i>
      <span class="mobile-nav-menu-label">Menu</span>
    </a>
    <div class="navigation-bar-wrapper">
      <div class="primary nav-menu">
        <ul id="menu-menu-1" class="primary nav-menu">
          <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home current-menu-item page_item page-item-107 current_page_item menu-item-has-children menu-item-182"><a href="https://example.com">Homepage</a>
            <ul class="sub-menu">
              <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-820"><a href="https://example.com/service1">Service 1</a></li>
              <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-823"><a href="https://example.com/service2">Service 2</a></li>
              <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-818"><a href="https://example.com/service3">Service 3</a></li>
              <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-821"><a href="https://example.com/service4">Service 4</a></li>
              <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-822"><a href="https://example.com/service5">Service 5</a></li>
            </ul>
          </li>
          <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-183"><a href="https://example.com/about">About</a></li>
          <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-184"><a href="https://example.com/contact">Contact</a></li>
          <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-185"><a href="https://example.com/privacy">Privacy</a></li>
        </ul>
      </div>            
    </div>
  </div>
</nav>

No_Implementation_Identifiers

没有使用名称表示在语言定义的包或语言定义的通用包的实例中出现的具有实现定义的标识符的声明。

但这在 GNAT Community Edition 2021(我猜也不在 GCC 11 中)中不起作用。

您可以创建自定义 GNAT 运行时并删除此子程序或使用方面 .main-navigation,.tertiary-navigation { background-color: #fff; position: relative; z-index: 50; } .tertiary-navigation { z-index: 1; } .navigation-bar-toggle { padding: 10px 0; display: inline-block; vertical-align: middle; } .navigation-bar-toggle { float: left; } ul.nav-menu [class^="ion"]:before,.nav-menu [class^="ion"]:before { font-size: 20px; vertical-align: middle; margin-right: 7px; margin-top: -5px; } .main-navigation .mega-category-list-wrapper,.primary-header .nav-menu.primary { display: none; vertical-align: middle; } .nav-menu ul,.nav-menu { margin: 0; padding: 0; list-style: none; } .navigation-bar-toggle { vertical-align: middle; font-size: 15px; } .navigation-bar-toggle i { margin-right: 5px; vertical-align: middle; } .navigation-bar-toggle i { font-size: 25px; } .site-header .nav-menu-container,.site-header .menu { display: inline-block; } .navigation-bar-wrapper { display: block; position: absolute; padding: 0; top: 100%; left: 10px; right: 10px; z-index: 99999; border-radius: 4px; box-shadow: rgba(0,0.06) 0 0 0 3px; background: #fff; display: none; } .site-header .navigation-bar-wrapper { z-index: 110; } .navigation-bar-wrapper.active { display: block; } .navigation-bar-wrapper:before,.navigation-bar-wrapper:after { width: 0px; height: 0px; border-style: solid; border-width: 0 10px 10px 10px; border-color: transparent transparent #fff transparent; content: ' '; position: absolute; top: -10px; left: 14px; z-index: 10; } .navigation-bar-wrapper:before { border-color: transparent transparent rgba(0,0.06) transparent; border-width: 0 11px 11px 11px; top: -14px; left: 13px; z-index: 7; } .nav-menu { padding: 2em; border-bottom: 1px solid #e9edf2; } .nav-menu:last-child { border-bottom: 0; } ul.nav-menu li > a,.nav-menu li > a { padding: 6px 0; font-size: 125%; display: inline-block; } .nav-menu ul ul { padding-left: 1em; border-left: 1px solid #e9edf2; } .nav-menu ul .category-list { top: auto; left: 0; padding: 0; border: 0; } .nav-menu.secondary .sub-menu.category-list { left: 0; } .nav-menu ul .category-list select,.nav-menu ul .category-list .select { width: 100%; } .nav-menu ul ul a { font-size: 105%; } .nav-menu li#categories-mega-menu { margin-top: 5px; margin-bottom: 5px; } @media (min-width: 992px) { .navigation-bar-wrapper,.main-navigation .mega-category-list-wrapper { display: block; } .primary-header .nav-menu.primary { display: table-cell; } .navigation-bar-toggle,.navigation-bar-wrapper .primary,.category-list .postform-wrapper,.navigation-bar-wrapper:before,.navigation-bar-wrapper:after { display: none; } .navigation-bar-wrapper { position: inherit; top: auto; left: auto; right: auto; bottom: auto; background: none; box-shadow: none; padding: 0; } .nav-menu,ul.nav-menu { padding: 0; border: 0; } .nav-menu.secondary ul.sub-menu li.menu-item-has-children:before,.nav-menu.secondary li.menu-item-has-children:after,.nav-menu.tertiary ul.sub-menu li.menu-item-has-children:before,.nav-menu.tertiary li.menu-item-has-children:after,ul.nav-menu.secondary ul.sub-menu li.menu-item-has-children:before,ul.nav-menu.secondary li.menu-item-has-children:after,ul.nav-menu.tertiary ul.sub-menu li.menu-item-has-children:before,ul.nav-menu.tertiary li.menu-item-has-children:after { display: none; content: ''; } .nav-menu.secondary ul.sub-menu li.menu-item-has-children:after,.nav-menu.secondary li.menu-item-has-children:before,.nav-menu.tertiary ul.sub-menu li.menu-item-has-children:after,.nav-menu.tertiary li.menu-item-has-children:before,ul.nav-menu.secondary ul.sub-menu li.menu-item-has-children:after,ul.nav-menu.secondary li.menu-item-has-children:before,ul.nav-menu.tertiary ul.sub-menu li.menu-item-has-children:after,ul.nav-menu.tertiary li.menu-item-has-children:before { display: inline-block; font-family: "Ionicons"; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; text-rendering: auto; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-size: 20px; vertical-align: middle; margin-right: 5px; margin-top: -1px; content: "\f3d0"; } .nav-menu.secondary ul.sub-menu li.menu-item-has-children:after,ul.nav-menu.tertiary ul.sub-menu li.menu-item-has-children:after { content: ""; } .nav-menu.secondary ul.sub-menu,.nav-menu.tertiary ul.sub-menu,ul.nav-menu.secondary ul.sub-menu,ul.nav-menu.tertiary ul.sub-menu { right: auto; left: -16px; } .nav-menu.secondary ul.sub-menu:before,.nav-menu.tertiary ul.sub-menu:before,ul.nav-menu.secondary ul.sub-menu:before,ul.nav-menu.tertiary ul.sub-menu:before { right: auto; left: 12px; } .nav-menu.secondary ul.sub-menu:after,.nav-menu.tertiary ul.sub-menu:after,ul.nav-menu.secondary ul.sub-menu:after,ul.nav-menu.tertiary ul.sub-menu:after { right: auto; left: 13px; } .nav-menu.secondary li:hover ul ul,.nav-menu.tertiary li:hover ul ul,ul.nav-menu.secondary li:hover ul ul,ul.nav-menu.tertiary li:hover ul ul { right: auto; left: 195px; } .nav-menu.secondary li:hover ul ul:after,.nav-menu.secondary li:hover ul ul:before,.nav-menu.tertiary li:hover ul ul:after,.nav-menu.tertiary li:hover ul ul:before,ul.nav-menu.secondary li:hover ul ul:after,ul.nav-menu.secondary li:hover ul ul:before,ul.nav-menu.tertiary li:hover ul ul:after,ul.nav-menu.tertiary li:hover ul ul:before { right: auto; left: -10px; top: 8px; border-width: 10px 10px 10px 0; border-color: transparent #fff transparent transparent; } .nav-menu.secondary li:hover ul ul:before,ul.nav-menu.tertiary li:hover ul ul:before { border-width: 11px 11px 11px 0; border-color: transparent rgba(0,0.06) transparent transparent; top: 7px; right: auto; left: -14px; } .nav-menu li,ul.nav-menu li { display: inline-block; margin-right: 25px; position: relative; } .nav-menu li a,ul.nav-menu li a { font-size: 100%; padding: 18px 0; display: inline-block; } .nav-menu li a:hover,ul.nav-menu li a:hover { text-decoration: none; } .nav-menu li:hover > ul,.nav-menu li:hover > ul > ul,ul.nav-menu li:hover > ul,ul.nav-menu li:hover > ul > ul { display: block; z-index: 101; } .nav-menu li:hover > ul li,.nav-menu li:hover > ul > ul li,ul.nav-menu li:hover > ul li,ul.nav-menu li:hover > ul > ul li { display: block; margin-right: 0; } .nav-menu li:hover ul ul,ul.nav-menu li:hover ul ul { top: 0; margin-top: 0; right: 195px; left: auto; border-radius: 6px; } .nav-menu li:hover ul ul:after,.nav-menu li:hover ul ul:before,ul.nav-menu li:hover ul ul:after,ul.nav-menu li:hover ul ul:before { right: -10px; top: 6px; border-width: 10px 0 10px 10px; border-color: transparent transparent transparent #fff; } .nav-menu li:hover ul ul:before,ul.nav-menu li:hover ul ul:before { border-width: 11px 0 11px 11px; border-color: transparent transparent transparent rgba(0,0.06); top: 5px; right: -14px; } .nav-menu li#categories-mega-menu,ul.nav-menu li#categories-mega-menu { margin-top: 0; margin-bottom: 0; position: inherit; } .nav-menu li[class^=ion] > a,ul.nav-menu li[class^=ion] > a { margin-left: -22px; padding-left: 22px; } .nav-menu li[class^=ion]:before,ul.nav-menu li[class^=ion]:before { margin-top: -2px; } .nav-menu li.menu-item-has-children:after,ul.nav-menu li.menu-item-has-children:after { display: inline-block; font-family: "Ionicons"; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; text-rendering: auto; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-size: 20px; vertical-align: middle; margin-left: 5px; margin-top: -1px; content: "\f3d0"; } .nav-menu .sub-menu,.nav-menu .children,ul.nav-menu .sub-menu,ul.nav-menu .children { display: none; position: absolute; padding: 10px 0; top: 95%; right: -16px; z-index: 99999; border-radius: 4px; width: 200px; box-shadow: rgba(0,0.06) 0 0 0 3px; background: #fff; border: 0; transition: all 0.1s linear; } .nav-menu .sub-menu ul,.nav-menu .children ul,ul.nav-menu .sub-menu ul,ul.nav-menu .children ul { left: 0; right: auto; } .nav-menu .sub-menu li:last-child,.nav-menu .children li:last-child,ul.nav-menu .sub-menu li:last-child,ul.nav-menu .children li:last-child { border-bottom: 0; } .nav-menu .sub-menu li.menu-item-has-children:after,.nav-menu .children li.menu-item-has-children:after,ul.nav-menu .sub-menu li.menu-item-has-children:after,ul.nav-menu .children li.menu-item-has-children:after { display: none; } .nav-menu .sub-menu a,.nav-menu .children a,ul.nav-menu .sub-menu a,ul.nav-menu .children a { margin: 0; padding: 6px 22px; display: inline-block; } .nav-menu .sub-menu li[class^=ion],.nav-menu .children li[class^=ion],ul.nav-menu .sub-menu li[class^=ion],ul.nav-menu .children li[class^=ion] { padding-left: 22px; } .nav-menu .sub-menu li[class^=ion] > a,.nav-menu .children li[class^=ion] > a,ul.nav-menu .sub-menu li[class^=ion] > a,ul.nav-menu .children li[class^=ion] > a { margin-left: 0; padding-left: 0; } .nav-menu .sub-menu:before,.nav-menu .sub-menu:after,.nav-menu .children:before,.nav-menu .children:after,ul.nav-menu .sub-menu:before,ul.nav-menu .sub-menu:after,ul.nav-menu .children:before,ul.nav-menu .children:after { width: 0px; height: 0px; border-style: solid; border-width: 0 10px 10px 10px; border-color: transparent transparent #fff transparent; content: ' '; position: absolute; top: -10px; right: 13px; z-index: 10; } .nav-menu .sub-menu:before,ul.nav-menu .children:before { border-color: transparent transparent rgba(0,0.06) transparent; border-width: 0 11px 11px 11px; top: -14px; right: 12px; z-index: 7; } .nav-menu .sub-menu.category-list,.nav-menu .children.category-list,ul.nav-menu .sub-menu.category-list,ul.nav-menu .children.category-list { left: 0; right: 0; width: 100%; max-height: 500px; overflow-y: auto; position: absolute; box-shadow: rgba(0,0.1) 2px 1px 0; background: #f0f3f6; border-radius: 0; padding: 30px 0; z-index: 10; } .nav-menu .sub-menu.category-list:before,.nav-menu .sub-menu.category-list:after,.nav-menu .sub-menu.category-list .children:before,.nav-menu .sub-menu.category-list .postform,.nav-menu .sub-menu.category-list .select,.nav-menu .children.category-list:before,.nav-menu .children.category-list:after,.nav-menu .children.category-list .children:before,.nav-menu .children.category-list .postform,.nav-menu .children.category-list .select,ul.nav-menu .sub-menu.category-list:before,ul.nav-menu .sub-menu.category-list:after,ul.nav-menu .sub-menu.category-list .children:before,ul.nav-menu .sub-menu.category-list .postform,ul.nav-menu .sub-menu.category-list .select,ul.nav-menu .children.category-list:before,ul.nav-menu .children.category-list:after,ul.nav-menu .children.category-list .children:before,ul.nav-menu .children.category-list .postform,ul.nav-menu .children.category-list .select { display: none; } .nav-menu .sub-menu.category-list a,.nav-menu .children.category-list a,ul.nav-menu .sub-menu.category-list a,ul.nav-menu .children.category-list a { padding: 12px 0; display: block; } .nav-menu .sub-menu.category-list .container,.nav-menu .children.category-list .container,ul.nav-menu .sub-menu.category-list .container,ul.nav-menu .children.category-list .container { position: relative; } .nav-menu .sub-menu.category-list .container:before,.nav-menu .children.category-list .container:before,ul.nav-menu .sub-menu.category-list .container:before,ul.nav-menu .children.category-list .container:before { width: 0px; height: 0px; border-style: solid; border-width: 10px 10px 0 10px; border-color: #fff transparent transparent transparent; content: ' '; position: absolute; top: -30px; left: 28px; z-index: 10; } .nav-menu .sub-menu.category-list .category-count,.nav-menu .children.category-list .category-count,ul.nav-menu .sub-menu.category-list .category-count,ul.nav-menu .children.category-list .category-count { font-size: 11px; border-radius: 2px; margin-right: 8px; padding: 4px; display: inline-block; min-width: 30px; text-align: center; } .nav-menu .sub-menu.category-list .mega-category-list-wrapper,.nav-menu .children.category-list .mega-category-list-wrapper,ul.nav-menu .sub-menu.category-list .mega-category-list-wrapper,ul.nav-menu .children.category-list .mega-category-list-wrapper { max-width: 75%; } .nav-menu .sub-menu.category-list li,.nav-menu .children.category-list li,ul.nav-menu .sub-menu.category-list li,ul.nav-menu .children.category-list li { width: 23%; float: left; margin-right: 2%; } .nav-menu.primary { text-align: right; padding-left: 4em; } .nav-menu.primary ul ul { text-align: left; } .nav-menu .account-avatar > a { padding: 8px 0; } } @media (min-width: 992px) { .main-navigation--transparent { display: none; } } .nav-menu.tertiary li.current-menu-item a:before,.nav-menu.tertiary li.is-active a:before { content: ' '; width: 0; height: 0; border-style: solid; border-width: 0 10px 10px 10px; border-color: transparent; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); } 对其进行标记以使限制生效。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?