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

18 篇文章 0 订阅
7 篇文章 0 订阅

程序入口函数(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文件的功能,但是今天看来,我错了,错得很远!在此作文告诫自己。

 

 

 

 

 

 

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值