【发布时间】:2014-08-17 20:09:21
【问题描述】:
让在C代码中定义:
typedef enum { A=1, B=2 } option_type;
void f(option_type option);
让我们也有 Ada 代码:
type Option_Type 是 (A, B); 对于 Option_Type'Size 使用 Interfaces.C.int'Size; 对于 Option_Type 使用 (A=>1, B=>2); X: Option_Type := A;
以下哪个代码是正确的(相应的 RM)?
-- 第一个代码
声明
过程 F(选项:Option_Type)
带导入,约定=>C,外部名称=>“f”;
开始
前锋(X);
结束;
或
-- 第二个代码
声明
程序 F(选项:Interfaces.C.unsigned)
带导入,约定=>C,外部名称=>“f”;
函数 Conv 是新的 Ada.Unchecked_Conversion(Option_Type, Interfaces.C.unsigned);
开始
F(转换(X));
结束;
我认为第一个和第二个 Ada 片段都是正确的,但不确定。
【问题讨论】:
标签: enums ada type-conversion