始终返回常量的C函数

时间:2017-02-24 15:48:11

标签: c const

什么是表达语义的好方法"这个函数总是会返回一个常数值"在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()) { ... } 似乎并没有削减它,或者至少在我尝试过的示例中。

1 个答案:

答案 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
}