为啥windows要搞一个WinMain

jiandingzhe 2012-09-17 04:24:10
像unix那样,如果在终端里运行就有终端,双击运行就没终端,不是很和谐吗?
...全文
249 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiandingzhe 2012-09-19
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

其实这个问题没啥可讨论的吧。看楼上各位都是说微软的行为不好。
其实我认为都遵循一样的标准是为了可移植,跨平台。
但在WINDOWS下写的程序有可能会移植到别的平台下吗?
那它爱叫什么就叫什么得了呗
[/Quote]
有,多了去了。
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

引用 6 楼 的回复:

1
main有2个参数,只能得到命令行参数。
WinMain有4个参数,默认得到的信息要超过main函数得到的。当然这些都可以调用api得到。

2
main会初始化输入输出,winmian不会。一般窗口程序不需要输入输出,少做一些无用的东西

我记得main可以有env参数。
[/Quote]
C标准规定了 main只有2种写法
int main(void) { /* ... */}
int main(int argc, char *argv[]) { /* ... */ }
紫雪 2012-09-18
  • 打赏
  • 举报
回复
每一个编译器都有自己的特点,就像你说的UNix下面不需要什么就可以一样,VC中的主函数入口就像一扇门,没有它就不能进入你想要的房间里面。这样确实有点历史性的倒退,但是反观一下,这样不就更加具有逻辑性了吗?
竞天问 2012-09-18
  • 打赏
  • 举报
回复
其实这个问题没啥可讨论的吧。看楼上各位都是说微软的行为不好。
其实我认为都遵循一样的标准是为了可移植,跨平台。
但在WINDOWS下写的程序有可能会移植到别的平台下吗?
那它爱叫什么就叫什么得了呗
jiandingzhe 2012-09-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

窗口程序里面的WinMain,就想c里面main,有什么不好吗?
[/Quote]
对语言标准的干涉,它修改了默认的入口函数。
而我完全找不到窗口程序必须用不同的入口函数名的理由。
jiandingzhe 2012-09-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

1
main有2个参数,只能得到命令行参数。
WinMain有4个参数,默认得到的信息要超过main函数得到的。当然这些都可以调用api得到。

2
main会初始化输入输出,winmian不会。一般窗口程序不需要输入输出,少做一些无用的东西
[/Quote]
我记得main可以有env参数。
图灵狗 2012-09-18
  • 打赏
  • 举报
回复
因为有了WinMain,所以乔布斯看不起比尔盖茨。
冷月清晖 2012-09-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 3 楼 的回复:
我很早之前也问过这个问题,:)


答案是....
[/Quote]

没有标准答案,参见楼上各位。
jiandingzhe 2012-09-18
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

每一个编译器都有自己的特点,就像你说的UNix下面不需要什么就可以一样,VC中的主函数入口就像一扇门,没有它就不能进入你想要的房间里面。这样确实有点历史性的倒退,但是反观一下,这样不就更加具有逻辑性了吗?
[/Quote]
编译器当然可以有自己的特点,但是语言标准更应当被遵守。
康斯坦汀 2012-09-17
  • 打赏
  • 举报
回复
这是微软对标准main函数的粗暴修改。哈哈。谁让你用人家的操作系统?就要遵守人家定的
规则。
northcan 2012-09-17
  • 打赏
  • 举报
回复
窗口程序里面的WinMain,就想c里面main,有什么不好吗?
  • 打赏
  • 举报
回复
1
main有2个参数,只能得到命令行参数。
WinMain有4个参数,默认得到的信息要超过main函数得到的。当然这些都可以调用api得到。

2
main会初始化输入输出,winmian不会。一般窗口程序不需要输入输出,少做一些无用的东西
星星眼 2012-09-17
  • 打赏
  • 举报
回复
双击运行就没终端?如果一个控制台程序要输入字符呢?
只是个人习惯的问题,非要和操作系统扯在一起。。。。。
shiter 2012-09-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
我很早之前也问过这个问题,:)
[/Quote]

答案是....
冷月清晖 2012-09-17
  • 打赏
  • 举报
回复
我很早之前也问过这个问题,:)
mujiok2003 2012-09-17
  • 打赏
  • 举报
回复
MS默认的入口函数(WinMain for GUI App, main for win32 console apps)可以自己在linker的参数中指定。
图灵狗 2012-09-17
  • 打赏
  • 举报
回复
说的很对,Windows系统其实是历史的倒退,商业上的成功在于大多数用户都是不专业的。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧