我有一个库的源代码,它有很多奇怪的IF,ELSE,FOR等所有常用C关键字的宏,而不是只使用通常的if,else,for,while关键字。这些宏的定义如下:
#define IF( a) if( increment_if(), a)
其中increment_if()函数定义如下:
static __inline void increment_if( void) {
// If the "IF" operator comes just after an "ELSE", its counter
// must not be incremented.
... //implementation
}
我真的不明白,这类宏的目的是什么?这个库是用于实时应用程序的,我想使用这样的宏必须减慢应用程序的速度。
答案 0 :(得分:10)
这些宏将有两个版本,一个只是普通的if语句,另一个是计算该语句的执行次数。这样做的原因是进行性能分析统计。如果计算每个代码块的执行次数,则可以计算每个代码块的执行次数。
在实时应用程序中,每个操作的时间是可预测的更为重要,因此您可以计算应用程序是否满足其最后期限。事实上,只要满足最后期限,这是不够的,只要满足最后期限,这就是所需要的。