我的问题很简单。我在网上搜索了他们,但我找到了不同的答案,所以我只想知道要跟着哪一个。
所以,首先,我认为WinMain不是C或C ++标准,但只是由Microsoft添加以确定何时加载不同的CRT启动代码,我是对的吗?
第二,WinMain是由操作系统调用的,其方式可以说类似于动态链接,或者只是程序启动点就像main一样?
我为什么这么问?我主要使用C编程MCU。我比SW更面向硬件,所以我喜欢MCU,我发现它们并为它们编程更“清晰”。
但是当我开始对C语言本身及其标准感兴趣时,我发现它很难。我的意思是,例如,在MCU上,你不需要int返回类型的main,以及在win32应用程序中,你需要不同于pure main的启动代码。
所以,我喜欢C,但我发现它的标准不知何故。感谢。
答案 0 :(得分:1)
我相信WinMain不是C或C ++标准版,但只是由Microsoft添加以确定何时加载不同的CRT启动代码,我是对的吗?
是。所有C和C ++标准都将main()
(并且只有main()
)定义为程序入口点(尽管它的确切签名可能因语言和标准版本而异)。
第二,WinMain是由操作系统调用的,其方式可以说类似于动态链接,或者只是程序启动点就像main一样?
实际上是从main()
调用的。 Windows程序中也有main()
,只是隐藏在WinAPI代码中。
答案 1 :(得分:1)
虽然情况完全相同,但请将C
视为3种语言:
您描述的内容(WinMain)属于类型3。
类型3程序适用于描述其使用的特定扩展的计算机
类型2有很多规则,但是保证用这种类型编写的程序在每个计算机系统上使用标准的C编译器(几乎每台带有键盘的计算机(包括PDA,腕表,等等))都能保证一致。 ..,...))。
类型1与类型2相同,减去一些规则和标准库 - 它应该适用于地球上的每个处理器。
标准的文本来自 1999 2001 2004 2007.您可以在ISO网站上找到PDF({{3} })