Loo*_*God 2 c++ recursion program-entry-point
C++ 标准文档中明确指出程序不能调用 main。但我编写了一个调用 main 的程序并且运行得很好,这是为什么呢?代码:
#include<iostream>
static int counter = 0;
int main(){
counter++;
std::cout << counter << " It works" << std::endl;
while(counter < 10){
main();
}
return 1;
}
Run Code Online (Sandbox Code Playgroud)
它打印到控制台“It Works” 10 次。根据标准文档,这不应该起作用,但它确实有效。这是怎么回事?
basic.start.main/3:
该函数main不得在程序中使用。
违反此规则会使您的程序出现未定义的行为- 这意味着该程序几乎可以做任何事情。它甚至可能会执行您希望它执行的操作,或者看起来执行您想要执行的操作,但会产生毁灭性的副作用,因此请避免在程序中出现未定义的行为。
关于缺乏诊断消息:我怀疑某些编译器(例如 g++)实际上支持main作为扩展调用。我必须打开-pedantic或-pedantic-errors获取诊断消息“ ISO C++ 禁止获取函数 '::main' [-Wpedantic] 的地址”
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |