读书人

试过将main() 跟 WinMain()函数放在.h

发布时间: 2013-10-23 11:39:13 作者: rapoo

试过将main() 和 WinMain()函数放在.h文件中码?

程序入口函数(main或WinMain)放置在.h文件中,你试过吗?

先看一个简单程序:

//Main.h

#include <iostream>
using namespace std;

int GameMain(void);

int main(void)
{
cout << "Hello-main" << endl;
GameMain();
return 0;
}

---------------------------------------------------

//Main.cpp

#include "Main.h"
#include <cstdio>

int GameMain(void)
{

printf("Hello-GameMain");

return 0;
}

编译运行后:

Hello-main

Hello-GameMain

在学习MFC时,开始也没发现有入口函数(MFC的入口函数为_tWinMain)的影子,后来明白是在全局对象theApp被CWinApp构造函数构造的过程中调用了入口函数_tWinMain()。从中发现入口函数是可以通过构造函数隐式调用的。

学了两年的编程语言,我真不知道可以将程序入口函数放置在.h文件中。今天在看A*算法(静态地图最短路径搜索算法原文链接)时,看作者提供的实现代码时未发现WinMain函数的影子,感觉好奇怪,但是整个工程竟然是可正常运行的。最后发现猫腻在LunchWindow.h这个头文件。于是有了此文。

我都一直墨守成规的将main函数放在.cpp文件中,虽然知道.h文件中可以声明变量、函数原型、函数实现、宏定义等等,但是从未怀疑过main函数的实现也能放在.h文件中,并且也能使工程正常的运行。

以前以为自己很懂.h文件的功能,但是今天看来,我错了,错得很远!在此作文告诫自己。

读书人网 >网络基础

热点推荐