如果有的话,例如:
#include <stdlib.h>
int f(void) { return 42; }
int g(void) { return 43; }
int main()
{
if(f()!=g())
abort();
}
是否可以从核心转储中获取f()
和g()
的返回值,而无需将原始代码分配给变量? (int lhs, rhs; if((lhs=f())!=(rhs=g())) abort();
)
答案 0 :(得分:2)
否-即使没有内联,比较也可能会被编译为减法,然后进行零测试,从而在转储时不再存在至少一个返回值(在寄存器或内存中)
通过优化,即使将值存储在变量中也无济于事:它肯定会消除无效存储。