我正在使用一种结构
struct IF_ID {
int PC;
string instruction;
};
然后在
int main()
{
IF_ID stage1;
stage1.PC=0;
FETCH(stage1);
DECODE(&stage1);
return 0;
}
当我在
stage1
函数中传递FETCH(stage1)
时,它工作正常,问题是我需要在FETCH(stage1)
中计算出的值才能在第二个函数DECODE(stage1)
中再次使用所以如果
stage1.PC
等于5,例如,我需要在DECODE(stage1)
函数中重用它,我该怎么做? 最佳答案
您正在按值将结构传递给FETCH()。
这意味着它已复制到该功能。
如果要传递实际的结构,则需要该方法来接收其指针或引用:
引用:
void FETCH(IF_ID& ref_stage);
指向struct的指针:
void FETCH(IF_ID* ref_stage);
如果您通过引用使用,内部函数的语义将不会改变。