我正在Visual Studio 2008中编写一款C++应用程序。在几个头文件中定义了很多结构体,例如:
#pragma pack( push , 1 ) // align on a 1-byte boundary
typedef struct myStruct_tag
{
/* ... */
} myStruct_t;
#pragma pack( pop ) // end 1-byte boundary alignment
在源文件中,这些定义的结构体被用作如下:
void MyFunc( void )
{
myStruct_t * myStruct = NULL;
myStruct = (myStruct_t *)malloc( sizeof(myStruct_t) );
/* and so forth and so on... */
}
尽管它成功编译且没有错误和警告,但有时当我右键单击自定义数据类型(例如在
MyFunc
中)时会出现错误:然后我点击“确定”关闭对话框并按下Ctrl+Alt+F7重新构建解决方案。它能够构建而不产生任何错误或警告,因此我知道它在编译时找到了符号“myStruct_t”未定义。
myStruct_t
的定义,但是在我尝试使用“转到定义”功能时无法找到它。我唯一想到的是这个应用程序有很多定义的结构体,单字节对齐,但这不应该有影响。有人知道如何修复吗?