7

可能重复:
C++ 中的 _tmain() 和 main() 有什么区别?

void main(...)、int main(..) 和 int _tmain() 有何不同。它们都是单进单出系统。但是我们在什么情况下使用这些启动功能呢?

4

2 回答 2

4

void main()是无效的; C++ 标准要求main返回int. 一些编译器让你侥幸逃脱。

int main()是两种标准形式之一。另一个是int main(int argc, char *argv[]),可用于接收命令行参数。实现可能允许其他形式,但不是必须的——但所有这些形式都必须返回int

int _tmain()特定于 Microsoft。

于 2012-10-15T09:18:55.413 回答
2

不同的实现支持不同的入口点(或入口点的选择)的原因是不同的操作系统或环境有不同的运行程序的方式,或者将参数信息传递给程序的不同方式。

有两种 C++ 实现:

“托管”实现假定存在某种操作系统。在托管实现上,main符合程序要求并且必须返回int.

“独立”实现不假设存在操作系统。在独立实现上,是否需要由实现决定main,但标准仍然说如果main需要,则必须返回int

实现的常见做法是提供托管实现的功能,但允许main. 这符合托管实现的标准,前提是接受定义的符合标准的程序。main实际上,实现允许(作为扩展)某些没有main功能的不合格程序,只要它们包含实现定义的替代方案。从技术上讲,我认为它必须诊断“错误”,但实际上没有人会意外使用这样的扩展,所以他们可能不想看到诊断。

同样,符合要求的实现可以接受包含void main. 同样,为了使实现符合要求,它必须诊断出程序不符合要求。

实现无论如何都接受的不合格程序的含义取决于实现。

_tmain是一个 MS 扩展。它是main窄字符版本和wmain宽字符版本的别名。wmain也是一个 MS 扩展,它就像main除了argv作为宽字符串而不是窄字符串提供之外。因此,这是一个环境示例,其中有两种不同的方式为程序提供参数,具体取决于程序是否处理窄字符范围之外的字符(即 8 位代码页之外)。

于 2012-10-15T09:20:28.450 回答