mfc中头文件可以相互包含的吗?

时间:2021-03-17 16:44:47
主框架窗口(CMainFrame),与子框架窗口(CChildFrame)之间。
头文件可以相互包含的吗?就是
在CMainFrame中#include "CChildFrame.h"
在CChildFrame中#include "CMainFrame.h"

我试了下,可以相互包含头文件。这样不会有什么异常出现吗?

10 个解决方案

#1


不会,有#prama once 表示只编译一次

#2


如果头文件中没什么公共变量的话(或者结构体定义)是可以的,否则会出现类型重定义错误
一般建议用
#ifndef xxxx
#define xxxx


#endif
来包括头文件定义,防止类型重定义

#3


可以采用预编译指令防止重复定义的问题

#4


因为是需要在CMainFrame中调用CChildFrame中的函数。
在CChildFrame中调用CMainFrame中的函数。。。

这样是允许的吗?什么情况下会出异常吗?谢谢前辈

#5


引用 4 楼 csharp_xinbing1 的回复:
因为是需要在CMainFrame中调用CChildFrame中的函数。
在CChildFrame中调用CMainFrame中的函数。。。

这样是允许的吗?什么情况下会出异常吗?谢谢前辈

允许啊,没什么问题

#6


最好不要用互包含这种方式

#7


不要这么用

#8


mfc中头文件可以相互包含的吗?
晕,那要怎么办哪。

是在CMainFrame中#include "CChildFrame.h"
还是在CChildFrame中#include "CMainFrame.h"

哪种更好一些?谢谢!

#9


可以互相包含!

#include "B.h"          class A;
class A                 class B
{                       {
   ....                     ....
}                         }
然后在class B的B.cpp文件中再 #include "A.h"
这样就OK了
我这么用了很多次,没有问题!



#10


刚才那个发的有点问题,重发!!!

可以互相包含!

#include "B.h" 
class A 
{
...
  } 



class A;
class B
{
   ...
}
然后在class B的B.cpp文件中再 #include "A.h"
这样就OK了
我这么用了很多次,没有问题!

#1


不会,有#prama once 表示只编译一次

#2


如果头文件中没什么公共变量的话(或者结构体定义)是可以的,否则会出现类型重定义错误
一般建议用
#ifndef xxxx
#define xxxx


#endif
来包括头文件定义,防止类型重定义

#3


可以采用预编译指令防止重复定义的问题

#4


因为是需要在CMainFrame中调用CChildFrame中的函数。
在CChildFrame中调用CMainFrame中的函数。。。

这样是允许的吗?什么情况下会出异常吗?谢谢前辈

#5


引用 4 楼 csharp_xinbing1 的回复:
因为是需要在CMainFrame中调用CChildFrame中的函数。
在CChildFrame中调用CMainFrame中的函数。。。

这样是允许的吗?什么情况下会出异常吗?谢谢前辈

允许啊,没什么问题

#6


最好不要用互包含这种方式

#7


不要这么用

#8


mfc中头文件可以相互包含的吗?
晕,那要怎么办哪。

是在CMainFrame中#include "CChildFrame.h"
还是在CChildFrame中#include "CMainFrame.h"

哪种更好一些?谢谢!

#9


可以互相包含!

#include "B.h"          class A;
class A                 class B
{                       {
   ....                     ....
}                         }
然后在class B的B.cpp文件中再 #include "A.h"
这样就OK了
我这么用了很多次,没有问题!



#10


刚才那个发的有点问题,重发!!!

可以互相包含!

#include "B.h" 
class A 
{
...
  } 



class A;
class B
{
   ...
}
然后在class B的B.cpp文件中再 #include "A.h"
这样就OK了
我这么用了很多次,没有问题!