回 帖 发 新 帖 刷新版面

主题:[原创]可以用空的main函数吗??

考考你:C++可以支持空的main函数,你相信吗?

#defines SOMETHING
#include<someheader>

void main(void)
{
return;
}

程序的其他部分随意,只要主函数是空的,你有什么方法可以实现吗?
知道的告诉大家!呵呵没人回帖我再公布!

回复列表 (共28个回复)

11 楼

class TriDat{
    ..
};


template<class T>
T TriData<class T>::Mid(void)


嗯。。我理解林杰杰不回贴的苦衷了。。

12 楼

下面这个可能是最小的C++程序了。
[code]int main()
{
}[/code]
注意main函数的返回类型必须是int。对于main函数如果不明确指定返回值,则编译器会自动在最后加上return 0;。

13 楼

[quote]void main(void)
{
return;
}[/quote]
楼主自己打自己嘴巴

14 楼

楼主,这句话我不太理解,请给解释下,谢谢
template<class T>
T TriData<class T>::Max(void)
特别是,模板后是返回值T,而后应是一个函数,这里却是TriData<class T>::Max(void),<class T>这个在这里是干什么的?

15 楼

[quote]你们真的不知道什么意思 吗?你的函数中加入了语句了!
我的意思是不论你其他部分怎么编写,只要求main函数的格式是
void main(void)
{
return;
}
main函数中除了return;以外,不加入代码,5楼的没有编译过吧??呵呵

还有2楼的吧
#include<iostream.h>
void main(void)
{
    cout<<"Hello World!"<<endl;//有了这一行还是空函数吗?
    return 'void';
}

还有,你即使编译了,你的编译后的可执行文件有甚么用呢?哈哈
[/quote]

vc 6下支持空的main()函数,老大....
//#include<iostream>
//using namespace std;
void main(void)
{

    return ;
}
通过.....
#include<iostream>
using namespace std;
void main(void)
{

    return ;
}
通过....
#include<iostream>
using namespace std;
int main(void)
{

    return 0;
}
通过....
不知道你到底想要什么.............................????

16 楼

可能楼主想说:

“哦,你知道‘C++程序在main函数为空(无除return外的可执行语句)的情况下,也能完成既定工作’吗?”

然后,由于表达不够清楚,导致了和他人的交流问题...

17 楼

[quote]可能楼主想说:

“哦,你知道‘C++程序在main函数为空(无除return外的可执行语句)的情况下,也能完成既定工作’吗?”

然后,由于表达不够清楚,导致了和他人的交流问题...[/quote]

[em11][em16][em3]

LZ是想程序不再由main掌握大局,而由程序的各部份自己管理和互相协调。

18 楼

16,17楼的两位可以成为C++高手,!!鼓励!!!
没看懂有两种可能1:没说明白,2; 理解力不够!
你的空的函数可以编译,执行起来只不过闪一下就没了,甚至都不闪一下,没用的东西吗!呵呵,这样的程序还用劳烦你大驾编呀!呵呵

19 楼

看完全部回帖,楼主想说的这个我明白,不过楼主的意思绝对没讲明白,而且题目上写出不规范的主函数(主函数类型只能是int),绝对该打嘴巴。
我原以为楼主的意思是,不懂声明是主函数,在这里瞎扯蛋,主函数都写错。
后来以为,楼主是想说,程序入口函数不一定叫main,比如用CL编译就可以用/ENTRY自定义入口,win32程序的入口也是WinMain。
看了16楼sarrow的回复,才知道是这么个事。

20 楼

main函数的真正标准形式是int main(int argc,void **argv);
你即使写成int main(void)也不是正确的,至于WinMain是微软的杜撰,根本不是C++的标准,只不过C++不允许不给反馈类型的,如果我的函数不返回任何值,用返回值作什么?int返回值只不过是给本程序的调用者返回一个参数,让他知道本程序运行的结果,现在传递这个信息的方法太多了,已经不用了返回值传递了!
比如,检查C盘空间是否大于20GB,要是大于就返回1,不够返回0,这时候
int main(void)
{
   int size=DiskSize()/1024L/1024L/1024L;
   if(size>=20)return 1;
  return 0;
}
其他程序调用他以后可以根据返回的1或者0 判断执行不同的功能了!
有动态库等等技术之后这种方法不太实用了!

我来回复

您尚未登录,请登录后再回复。点此登录或注册