可能重复:
主要是()重载在C ++?
这里是我的代码:
#include <iostream>
int main(void* a, void* b)
{
std::cout << "hello standalone " << std::endl;
return 0;
}
不同的参数应该有名字改编后不同的符号名( void* a, void* b)
应该从不同的(int, char**
),但在运行时,该程序没有任何问题。
这是为什么?
因为main
是一种特殊情况,并且编译器为它生成特殊代码。 通常情况下, main
会从启动调用程序,通常被称为crt0
在旧的编译器,用C写的,所以编译器将生成main
,就好像它被宣布extern "C"
。 但是,这绝不是必需的; 这是一个只是一个典型的实现。
这取决于编译器。 主标准要求的签名是:
int main()
int main(int argc, char** argv)
int main(int argc, char* argv[])
但是,除了这些,编译器是免费提供其他签名也是如此。
例如,GCC 4.3.4拒绝你的代码- http://ideone.com/XZp2h
MSVS抱怨无法解析的外部。