首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向Ada short_integer分配c short

向Ada short_integer分配c short
EN

Stack Overflow用户
提问于 2019-03-18 01:53:31
回答 1查看 134关注 0票数 1

我错过了一些关于Ada和类型的基本想法。我只想做这样的事:

代码语言:javascript
复制
    procedure Example(  rec_len : in  interfaces.c.short )  is

        shortLen      : Short_integer   := 0;
        recLen        : integer := 0;

    begin -- example

         shortLen := rec_len;   -- and
         recLen   := shortLen;

         Text_IO.Put_Line( "rec length = "& Integer'IMAGE( recLen ));

    end example;

换句话说,从C语言short类型中获取整数值。

i-c.ads中,short的定义是相同的--

代码语言:javascript
复制
     type short is new Short_Integer;

我找不到一个引用或例子来显示完成这个简单操作所需的合成糖。

在行:shortLen := rec_len中,GNAT编译器表示“Standard.Short_Integer类型的期望”,这当然是正确的。然而,我还没有找到一个合适的"to_Short()类型的调用“。我意识到这是一个基本的问题,我仍然认为它应该是我可以在某个地方(容易??)找到的东西。

EN

回答 1

Stack Overflow用户

发布于 2019-03-18 02:06:18

Ada (与C不同)不允许将一个数值类型的值赋值给另一个数值类型的变量,而不需要显式转换。

这应该是可行的:

代码语言:javascript
复制
shortLen := Short_Integer(rec_len);
recLen := Integer(shortLen);

本声明:

代码语言:javascript
复制
type short is new Short_Integer;

不会使short成为Short_Integer的别名(就像typedef在C中所做的那样)。它使short成为从Short_Integer派生出来的一种新的、独特的类型。

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

https://stackoverflow.com/questions/55213782

复制
相关文章

相似问题

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