【发布时间】:2010-07-06 15:44:06
【问题描述】:
我正在尝试修改 MIPS 模拟器以在运行时显示其寄存器的内容。我的问题是指我计划这样做的方式。所以...
我有一个文件,file1.cpp 和 file2.cpp。 file1.cpp 中有一个名为
的局部公共变量typedef long ValueGPR;
ValueGPR reg[33];
我想在 file2.cpp 中访问。这些文件中的每一个都有一个头文件。 File2.cpp 包含一个函数,该函数通过指令迭代跟踪程序指令的执行,使其成为插入 printf("REG[%d]:%d\n",i,reg[i]); 的完美位置。声明或类似的东西,但 reg 是 file1.cpp 中的局部变量。如何将允许我访问此 reg 变量的内容拼接在一起?
这是两个文件的实际样子(在考虑了更多之后): "文件1.h"
typedef long ValueGPR;
...
class ThreadContext {
...
public:
ValueGPR reg[33];
...
...
}
...
“文件2.cpp”
...
#include ".../ThreadContext.h"
...
long ExecutionFlow::exeInst(void) {
...
//ADD PRINTF OF reg[1] - reg[32] HERE
...
}
...
【问题讨论】:
-
糟糕,我搞砸了我的描述......所以,reg 用于 file1.cpp 但它在 file1.h 中以下列方式定义:
typedef long ValueGPR; public: ValueGPR reg[33]; -
所以,如果是这种情况,我可以替换 public: ValueGPR reg[33];使用外部 ValueGPR reg[33];?
-
@Dan: 如果
reg是一个类的成员(这似乎是从你的 cmets 判断的),那么将其更改为全局将是一个坏主意 - 你会得到不正确的如果您有多个该类的实例,则行为。相反,您应该找到一种方法来传递reg或包含它的对象,方法是引用file2.cpp中想要访问它的函数。 -
你是对的,reg 是类的一部分。是否可以在包含 reg 的对象中定义全局指针?一个人如何去做这件事,然后在 file2.cpp 中访问它?
-
请张贴课程声明。我越来越糊涂了。