我有一个奇怪的问题,几乎看起来像一个Visual Studio 2008问题。我有一个C结构定义如下:为什么Visual Studio不知道这个结构的正确定义?
static struct frame {
short typupdt;
char callarg[1+CallSiz];
char *unitarg;
XTime unitage;
XTime orgtime;
XTime newtime;
char oldstat[1+StatSiz];
char newstat[1+StatSiz];
char incdisp[1+DispSiz];
char orgdisp[1+DispSiz];
char clearcod[1+ClearSiz];
char orgclear[1+ClearSiz];
char observd[1+ObsSiz];
char orgobs[1+ObsSiz];
char raddesc[1+Desc1Siz];
char incnum[INVIDLEN];
char agency[1+AgencySiz];
int wlins;
int wcols;
int skipsrch;
struct frame *next;
} *Frame= NULL;
应该(而且似乎)创建一个新的名为struct
和frame
全局指针(此文件)到名为Frame
该struct
的一个实例。这一切似乎在代码本身工作正常。但是,当我调试此代码并在某处设置了一个中断点,然后在监视窗口中检查Frame
时,它报告的信息完全错误。这就像它正在查看正确的内存块,但是它对定义的理解是不正确的,即它所说的结构体所具有的字段并不是很接近。
起初我以为有些奇怪的命名空间问题或者其他东西,所以我改变了frame
和Frame
的名字,但问题仍然存在。任何人都知道发生了什么事?就像我说的那样,代码似乎可行,但调试几乎是不可能的。
编辑:我更新了真正定义的定义,这里有我在监视窗口看到一个截图:
alt text http://img156.imageshack.us/img156/6943/watchlist.jpg
,使感舔任何人?我仍然非常难过。
好吧,因为没有一个答案似乎有所帮助,所以您可能需要提供一个小的可编译示例来显示您遇到的错误,以便我们可以看到错误。 – sbi 2009-10-16 10:06:10
肯定会发布一个显示问题的小例子 - 我用'struct frame'试了一下,我在调试器中添加了几个字段,并且没有显示'Frame'指向的内容的问题。 – 2009-10-16 14:34:07
添加了原始定义以及当我在某个地方的文件中发生故障时在监视窗口中看到的内容。 – Morinar 2009-10-16 15:09:29