新闻中心

EEPW首页 > 测试测量 > 设计应用 > 一种基于模板元编程的量纲检测方法

一种基于模板元编程的量纲检测方法

作者: 时间:2009-07-14 来源:网络 收藏
2.2 单位和量纲的计算
由于量纲都是用分数表示的,因而其计算会稍有麻烦。下面定义TADA方法中量纲分数的加、减、乘、除和等价测试运算。
(1)分数的加法运算,如下所示。

本文引用地址:https://www.eepw.com.cn/article/195807.htm


(2)分数的减法运算。TADA方法通过加法实现减法计算,如下所示。


语义:分数相减并约分,即:


(3)单位相乘。分别将3个量纲分数相加,然后使用BuildUnit生成新单位。


语义:单位Ua与单位Ub相乘后的新单位。
(4)单位相除。与乘法处理方式相似。


语义:若单位ua与单位Ub等价则不产生任何效果,否则产生编译期错误。
2.3 单位和量纲标注的原理和语法
与Osprey等方法类似,TADA方法也在待检测源程序进行单位标注,以使得检测器能够知道每个变量的单位。由于经过单位标注的待检测程序仍然是合法的可编译的程序,所以标注信息必须由语言自身已有的语法要素构成;标注信息还不能影响被标注变量的任何计算特性及使用方式,只有满足这两点要求的标注方式才能使标注工作量最小化。此外,已标注变量应该禁止从未标注变量进行各种隐含的类型转换,这样严格的限制才能有效进行单位量纲的匹配检测。对于C++语言来说,可以采用模板类的方式实现。
标注实质上是把语言原始的数据类型替换成TADA方法预定义的模板类,而模板类实现了各种运算符号的重载,同时禁止了任何隐含的类型转换,使得量纲标注既满足语法要素的要求,又满足计算兼容性的要求和禁止隐含转换的要求。TADA方法中标注的实现如下所示。




评论


相关推荐

技术专区

关闭