【发布时间】:2011-04-25 21:33:05
【问题描述】:
这个问题困扰了我一段时间。让我们考虑以下两个程序:
#incude <iostream>
int main()
{
std::cout << "Hello, World!";
}
和
int main()
{
int x = 5;
int y = x*x;
}
- 窗口: 第一个示例自然需要一些用于控制台的系统 .dll。我明白那个。第二个呢?它需要什么来运行吗?一些运行时库?顺便问一下,运行时库实际上是做什么的?
- Linux: 不知道,能指教一下吗?
我知道这取决于编译器和操作系统,但我需要一般答案或特定示例。 TIA。
【问题讨论】:
-
您的第二个示例不需要任何处理,除了来自
main()的return 0;。它不调用任何类型的函数,也不访问volatile变量,因此它没有可观察到的行为。 -
@David:是的,但是假设我们设置了无优化
-
@Armen:它仍然不需要处理,因为标准不包括优化(它允许)。编译器所做的是其他事情,但这会因编译器而异。如果您想强制处理,请在其中添加一些
volatiles。 -
@David - 由于
main()之前和之后的 CRT 调用,一个空程序仍在处理。看我的回答。 -
@Ashleys:@David 完全正确。第二个程序等价于到
int main() { return 0; }。该程序不需要任何东西。如果它恰好是托管的,那就是另一个问题了。
标签: c++ operating-system runtime dependencies