我使用的库提供了一个const函数,它在第一次调用时进行一些初始化:
foo_t get_foo(void) __attribute__((const));
我需要在依赖于初始化的其他任务之前调用get_foo
。我怎样才能可靠地做到这一点?
编译器可以并且将消除简单的get_foo();
调用。
我认为似乎有效的解决方案是将结果分配给虚拟的volatile变量:
volatile foo_t dummy = get_foo();
首先,这个定义明确的行为是什么?
第二,有没有办法在没有虚拟变量的情况下强制调用const函数?