2017-01-30 7 views
0

プラグマリストが何をしているのか誰に教えてもらえますか(具体的には、「コンパイルの一覧」)? LRMの説明を理解できません。2.8.25Ada:プラグマリスト

プラグマリストは、単一の引数として識別子のいずれかをオンまたはオフにします。このプラグマは、プラグマが許可されている場所であればどこでも許可されます。コンパイルのリストは、反対の引き数を持つリストプラグマが同じコンパイル内で指定されるまで、継続または中断されることを指定します。コンパイラがリスティングを生成している場合は、プラグマ自体が常にリストされます。

答えて

2

コンパイラは、エラーメッセージなど、生成されるすべてのメッセージと共に、その入力を出力、つまり「一覧表示」することができます。これは、メッセージが何であるかを明確に見せたいときに便利です。 IDEは通常メッセージをコードにリンクしますが、今日でさえ、Jacob'sのヒントをコンピューティング履歴に考えると、リストは文字通り指摘することができます。 pragma Listを使用すると、プログラマーは、自分が知っている場合、リストする必要のないものを除外できます。または、秘密の理由から、決して列挙してはならないものを除外します。

、最初pragma Listと、元のプログラムテキスト、リスト:あなたのコンパイラがGNATであればリストについては、スイッチ間で-gnatlを指定し、コンパイル:)

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; 

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 

を(

2

コンパイラがどのように動作し、1970年代後半に使用されたかを考えてください。私はかなり意味が書かれているように簡単だと確信しています(代わりに "アウトプット"を使って "生産しています"、より現代的な言葉を得る)。

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 
    ...