小编Arj*_*jun的帖子

持久 stty 设置?

目前,我可以通过执行 来禁用终端输出挂起/恢复“功能”(CTRL+S 和 CTRL+Q 废话)stty -ixon

不幸的是,这不是永久性的。我每次启动时都需要设置此选项xterm

是否有一个可以编辑的文件可以记住我的设置并在重新启动和重新启动时保持永久设置?

unix linux terminal

6
推荐指数
1
解决办法
3967
查看次数

Ada中的按位操作

是否有某个教程可以解释哪些数据类型可以使用按位运算?我不知道为什么阿达夫人认为我不能按比例或两个标准.整个......

$ gnatmake test.adb
gcc -c test.adb
test.adb:50:77: there is no applicable operator "Or" for type "Standard.Integer"
gnatmake: "test.adb" compilation error
Run Code Online (Sandbox Code Playgroud)

真?我原谅编译器无法进行AND/OR枚举数据类型.我原谅编译器无法对字符类型执行按位操作.我原谅编译器无法从Unsigned_8转换为Character,这是我认为显而易见的方式.但这是不可原谅的.

bit-manipulation ada

2
推荐指数
2
解决办法
7623
查看次数

前提条件不适用于GNAT?

我仍然是Ada的新手,我认为我误解了Preconditions的使用,因为通过GNAT RM查看似乎检查不会在运行时执行.此外,此处的GNAT RM for Precondition不指定在不满足前提条件时抛出哪个异常.

这是我正在尝试的代码:

procedure Test is
begin

   generic
      type Element_Type is private;
      use System.Storage_Elements;
   procedure Byte_Copy (Destination : out Element_Type;
                        Source      : in  Element_Type;
                        Size        : in  Storage_Count := Element_Type'Size)
      with Pre =>
         Size <= Destination'Size and 
         Size <= Source'Size;

   procedure Byte_Copy (Destination : out Element_Type;
                        Source      : in  Element_Type;
                        Size        : in  Storage_Count := Element_Type'Size)
   is
      subtype Byte_Array is Storage_Array (1 .. Size / System.Storage_Unit);

      Write, Read : Byte_Array;
      for Write'Address use Destination'Address; …
Run Code Online (Sandbox Code Playgroud)

ada preconditions gnat

1
推荐指数
1
解决办法
469
查看次数

Silly Ada通用包裹管理?

我刚刚开始使用Ada,我发现通用包声明相当愚蠢.也许我做得不对,所以我正在寻找更好的选择.

看看下面的例子.

package STD_Code_Maps is new
   Ada.Containers.Map(Key_Type     => STD_Code_Type;
                      Element_Type => Ada.Strings.Unbounded.Unbounded_String);
STD_Code_Map : STD_Code_Maps.Map;

-- . . .

procedure Do_Something is
   Item : Ada.Strings.Unbounded.Unbounded_String;
begin
   Item := STD_Code_Maps.Element(STD_Code_Maps.First(STD_Code_Map));
   -- Do something with the Item
   -- . . .
end Do_Something;
Run Code Online (Sandbox Code Playgroud)

简单地写STD_Code_Map.First.Element一下而不是写下来就更清晰了STD_Code_Maps.Element(STD_Code_Maps.First(STD_Code_Map));

显然我做错了 - 我想.我在那里至少重复三次STD_Code_Map这个短语.我只是为了冗长和一切,但实际上我写的代码对我来说似乎很糟糕和愚蠢.

我想知道是否有解决方案不要求你将包重命名为类似于package Map renames STD_Code_Maps;缩短代码的东西,但我不想在每个过程条目上执行此操作.我真的认为类似的事情STD_Code_Map.First.Element要简单得多.这可以在Ada 2012中完成吗?

注意:默认情况下使用Unbounded_String包也很困难.标准库设计者是否真的考虑过荒谬且过长的包层次结构?

感谢您阅读本文,并可能帮助我.我是阿达的新手.

ada

0
推荐指数
1
解决办法
439
查看次数

标签 统计

ada ×3

bit-manipulation ×1

gnat ×1

linux ×1

preconditions ×1

terminal ×1

unix ×1