error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默

原创 2013年12月02日 14:35:21

问题一:

error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

原因分析:

1. (此情况经常出现在大型工程项目中)如果存在两个类的头文件a.h和b.h,在a.h中有这样的语句:#include"b.h",在b.h文件中有这样的语句:#include "a.h"且在一个类中有另一个类的对象时,那么就会出现这样的错误。

2. 没有包含要定义的类的头文件。

3.项目中少加了宏定义,导致头文件重复定义或相应宏无法识别。

4.当有多个头文件时,顺序写反也可能导致相关的错误,其根本是头文件中的预编译语句被隐去了。

5. 可能是函数没有写返回值

解决方法:

我遇到的问题系第一种情况,即头文件的相互包含问题,经过多次尝试,最后发现在一个类中使用另外一个类时,应该在前面应该声明另外那个需要引用的类,即例如:

// CSlideThreshod2对话框

class CMainWindow :public CFrameWnd

{

       CTWndAttrs* m_WndAttrs;

       ......添加上TWndAttrs.h就可以解决问题了

}

问题二:

应该不能称之为问题,就是自定义消息,感觉还是挺有用的,最近在非模态对话框中使用到自定义消息~~~ 自定义消息步骤:

第一步:用户自定义消息宏

#define WM_MY_MESSAGE (WM_USER + n)

第二步:实现消息处理函数,该函数使用WPRAM和LPARAM参数并返回LPESULT

LPESULT CMainFrame::OnMyMessage(WPARAM wParam, LPARAMlParam)
  {
     //TODO: 处理用户自定义消息
     ...
    return0;
  }

第三步:在类头文件的AFX_MSG块中说明消息处理函数

class CMainFrame:public CMDIFrameWnd
   {
     ...
     //一般消息映射函数
     protected:
     //{{AFX_MSG(CMainFrame)
    afx_msgint OnCreate(LPCREATESTRUCT lpCreateStruct);
    afx_msgvoid OnTimer(UINT nIDEvent);
    afx_msgLRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
   }

第四步:在用户类的消息块中,使用ON_MESSAGE宏指令将消息映射到消息处理函数中

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
   //{{AFX_MSG_MAP(CMainFrame)
   ON_WM_CREATE()
   ON_WM_TIMER()
   ON_MESSAGE(WM_MY_MESSAGE,OnMyMessage)
   //}}AFX_MSG_MAP
   END_MESSAGE_MAP()

相关文章推荐

error C4430: 缺少类型说明符 - 假定为 int....的一种情况的解决方法

这段时间用VS2013写代码的时候,一不小心就出现了这个提示,这个问题困扰了我一段时间,不过总算解决了,这里记录一下!      我这里先描述本人碰到的问题:     正如上图所见,一段在...

error C2146 和C4430 错误

最近在使用程序编辑机器人控制程序,但是在编译程序时遇到error C2146和error c4430错误,经过网上查阅资料发现是头文件之间包含顺序引起的。 如果存在a.h和b.h这两个头文件,在a....

error C4430: 缺少类型说明符 - 假定为 int

error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int编程语言 2010-03-30 16:20:12 阅读254 评论0 字号:大中小 c:\evan\w...

error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

c:\evan\workspace\1\1\netwowkippack.h(50) : error C2146: 语法错误 : 缺少“;”(在标识符“nSourPort”的前面) c:\evan\wo...
  • qingzai_
  • qingzai_
  • 2015年01月28日 17:36
  • 15643

error C2146: 语法错误: 缺少“;”(在标识符“WINAPI”的前面) 及 “error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int” 解决方案

在VS里字定义了一个工程,添加了一个CPP和H,编译时出现了以下奇怪的错误: 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\includ...

缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int---->解决方法

写了一个对应让其出的错误(其实也挺不容易的喔 )错误如下:1>d:\work\win32project\testeachotherclude\testeachotherclude\test2.h(9)...

vs2008编译遇到error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

最近,vs2008编译遇到error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int   具体错误如下: 1>c:\program files\micros...

error C2146: 语法错误: 缺少“;”(在标识符“m_tTimer”的前面) error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

1>e:\visual studio 2013files\projects\muke\t18_友元类\t18_友元类\match.h(11): error C2146: 语法错误: 缺少“;”(在标识...

缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int---->解决方法 .

在做cocos2dx时候出现这个错误,主要是由于两个类相互include引起的 A文件: #include "B.h" class A{} B文件: #include "A.h" clas...
  • thc1987
  • thc1987
  • 2014年03月04日 15:22
  • 9022

error C4430: 缺少类型说明符 - 假定为 int

http://mfvan.blog.163.com/blog/static/58895190201023042012727/   c:\evan\workspace\1\1\netwowkippa...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默
举报原因:
原因补充:

(最多只允许输入30个字)