我正在使用一种结构

  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);


如果您通过引用使用,内部函数的语义将不会改变。

10-08 08:08