【发布时间】:2014-07-03 03:33:29
【问题描述】:
所以我在 Ada 中有一个(几何)矢量类型;这是成员x、y 和z 的记录。
在某些情况下,我会想在其中存储颜色三元组,就像 GLSL 一样。红色值进入x,绿色值进入y,蓝色值进入z。因此,如果我可以使用r、g 和b 作为x 的可互换别名,这将非常方便——并使我的代码更简单、更短、更易于理解并因此更易于维护。 y 和 z(同样,就像 GLSL 一样)。
这个可以吗?
如果它是标记类型,那么我可以定义使用Implicit_Dereference 的方法来返回对x、y 和z 成员的引用;这些将与真实的结构成员无缝互换。不幸的是,出于实现原因,我不能这样做 --- 这必须与 C 互操作,并且必须具有排除标记的特定结构布局。而且 AFAICT 方法语法仅适用于标记类型(这是一个奇怪的限制)。
建议?
【问题讨论】:
-
我知道这适用于函数和包,但是如何使它适用于结构成员?
-
几何向量是否与 Ada 端的颜色三元组共享相同的数据空间?还是 C 端的函数有时采用一种,有时采用另一种(大概用另一个参数来说明是什么意思)?还是别的什么?