首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ada: Pragma列表

Ada: Pragma列表
EN

Stack Overflow用户
提问于 2017-01-30 04:46:31
回答 2查看 206关注 0票数 1

有谁能告诉我Pragma列表是做什么的(具体来说,什么是“汇编的列表”)?我不明白LRM (2.8.25)的描述

一个实用化列表将其中一个标识符On或Off作为单个参数。这种实用主义在任何地方都是允许的。它指定将继续或暂停编译的列表,直到在同一编译中给出具有相反参数的列表实用化。如果编译器正在生成列表,则始终列出该实用程序本身。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-30 08:38:49

编译器可以输出,即“列表”其输入,以及它将生成的任何消息,例如错误消息。当您希望在上下文中清楚、详细地查看消息的内容时,这是非常有用的。IDE通常会将消息链接到代码,但即使在今天,考虑到雅各布氏在计算历史上的暗示,列表也可以直接指出。使用pragma List,程序员可以排除不需要列出的内容,如果他或她知道的话。或者,出于保密的理由,排除不应该列出的内容。

清单首先,然后是原始程序文本,使用pragma List

代码语言:javascript
复制
Compiling: /some/path/some_proc.adb
Source file time stamp: 2017-01-30 08:30:40
Compiled at: 2017-01-30 09:30:42

     1. procedure Some_Proc is
     2.     procedure Inner;
     3.     --  Does this and that...
     4.
     5.     pragma List (Off);
    10. pragma List (On);
    11.
    12. begin
    13.     Inner (42);
            |
        >>> too many arguments in call to "Inner"

    14. end Some_Proc;

 14 lines: 1 error
gprbuild: *** compilation phase failed

(如果您的编译器是GNAT,请在开关中指定-gnatl,以便列表,并编译:)

代码语言:javascript
复制
procedure Some_Proc is
    procedure Inner;
    --  Does this and that...

    pragma List (Off);
    procedure Inner is
    begin
        null;
    end Inner;
    pragma List (On);

begin
    Inner (42);
end Some_Proc;
票数 3
EN

Stack Overflow用户

发布于 2017-01-30 06:33:51

您应该回想一下编译器在1970年代末是如何工作和使用的。我很确定这个意思和它写的一样简单(用“输出”代替“正在产生”,以得到一个更现代的措辞)。

代码语言:javascript
复制
with Ada.Text_IO;
--  Now you see me.
pragma List (Off);
--  Now you do not.
private with Some_Secret_Package;
pragma List (On);

package Hello_World is
   ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41929152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档