C++ 标准文档说程序不应调用主函数,但我调用了

The c++ standard documentation says a program shall not call the main function, but I did

它在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;
}

它打印控制台“It works”10 次。根据标准文档,这应该行不通,但它确实有效。怎么回事?

basic.start.main/3: 函数 main 不得在程序中使用。

违反此规则会使您的程序具有 undefined behavior - 这意味着该程序几乎可以做任何事情。它甚至可能会做你想做的事,或者看起来会做你想做的事,但会产生毁灭性的副作用,因此请避免在你的程序中出现 未定义的行为

关于缺少诊断消息:我怀疑某些编译器,如 g++,实际上支持调用 main 作为扩展。我必须打开 -pedantic-pedantic-errors 才能获得诊断消息“ISO C++ 禁止获取函数‘::main’ [-Wpedantic] 的地址”。 =17=]