我自己在SDI中创建分割视图,是按这样的步骤的,这也是参考了CodeProject.com的朋友的文章。为了避免下面错误的产生:
d:\11\11view.h(22) : error C2143: syntax error : missing ';' before '*'
d:\11\11view.h(22) : error C2501: 'CMy11Doc' : missing storage-class or type specifiers
d:\11\11view.h(22) : error C2501: 'GetDocument' : missing storage-class or type specifiers我在视图的头文件的这一段加了
#if _MSC_VER > 1000
#pragma once
//#include "11Doc.h" 《-----新加的
#endif // _MSC_VER > 1000这下可以顺利编译并且成功执行。后来我对比用MFC自己生成的分割视图的例子发现,自动生成的代码中并没有我后面加的这一段,反而在MainFrm.h中发现了这么一句#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class CMy00View; 《------------就是这句class CMainFrame : public CFrameWnd
{
protected: // create from serialization only
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)请问各位高手,为什么会有这样的差别出现呢?到底他们的用途都是什么?谢谢!
d:\11\11view.h(22) : error C2143: syntax error : missing ';' before '*'
d:\11\11view.h(22) : error C2501: 'CMy11Doc' : missing storage-class or type specifiers
d:\11\11view.h(22) : error C2501: 'GetDocument' : missing storage-class or type specifiers我在视图的头文件的这一段加了
#if _MSC_VER > 1000
#pragma once
//#include "11Doc.h" 《-----新加的
#endif // _MSC_VER > 1000这下可以顺利编译并且成功执行。后来我对比用MFC自己生成的分割视图的例子发现,自动生成的代码中并没有我后面加的这一段,反而在MainFrm.h中发现了这么一句#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class CMy00View; 《------------就是这句class CMainFrame : public CFrameWnd
{
protected: // create from serialization only
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)请问各位高手,为什么会有这样的差别出现呢?到底他们的用途都是什么?谢谢!
解决方案 »
- 熟悉matlab的朋友请进
- 用NSIS制作基于数据库的安装包
- 该死的_bg2312字体,有谁知道,为什么从这些字体中得到的轮廓矢量不遵守“内外轮廓时钟方向相反”的潜规则,同一个字里都是外轮廓但有的顺有的逆,怎么解决?
- 求助!程序出现死循环
- 请教 PROCESS_LOCAL(COccManager, _afxOccManager) 这里new出来的COccManager是在什么地方删除的啊????
- 请问什么是DLL 动态链接库
- 请问如何做到即使用户进入安全模式也无法禁止一个程序的启动?
- 一个简单的问题............
- 南京哪里有培训游戏开发的学校?
- 在c++下面的一些数学函数在vc下为什么用不起来啊
- 需要一个CListBox的例子(肯定给分)
- 对于多线程线程网络的一个问题,初学.请高手帮忙看看..... 急
编译是以实现文件.cpp或.c为编译单位的,
头文件是在实现文件中展开编译的,
有些类用到了指向另一些类的指针,
如果该头文件在cpp的展开点,
编译器仍不知道指针指向的类是否是一个类型,编译会出错.
这种情况要进行前置声明或包含指向类的头文件,
为的就是编译器在编译cpp时能识别指针指向的类.一般都不用前置声明,只要包含相应类的头文件即可,
除非是交叉引用的情形.(即a.h中用到b.h中的类,而b.h中也用到a.h中的类)