什么是表达语义的好方法"这个函数总是会返回一个常数值"在C?
我正在考虑内联汇编函数,这些函数读取只读寄存器,并可能在它们上移位和/或屏蔽。显然,在运行期间,函数的返回值不会改变;所以编译器可能会一直避免内联或调用函数,而是旨在重用给定范围内第一次调用的值。
.g
我可以存储值并重用它。但是,可以通过其他宏扩展间接调用此函数。
const int that_const_value()
{
return (ro_register >> 16) & 0xff;
}
将原始函数定义为#define that_bit() that_const_value() & 0x1
#define other_bit() that_const_value() & 0x2
...
if (that_bit()) {
...
}
...
if (other_bit()) {
...
}
似乎并没有削减它,或者至少在我尝试过的示例中。
答案 0 :(得分:0)
我并非百分百确定我是否正确理解了您的问题,但您是否正在寻找这样的解决方案:
#define that_const_value ((ro_register >> 16) &0xff)
#define that_bit (that_const_value & 0x1)
#define other_bit (that_const_value & 0x2)
这只会取代'编译时的所有内容,您可以这样做:
if(that_bit)
{
//Do That
}
if(other_bit)
{
//Do Other
}