Windows и Unix имеют:
int main(int argc, char **argv, char **envp)
, а приложения Win32 имеют:
int WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
, а MacOS имеет:
int main(int argc, char **argv, char **envp, char **apple)
Не забывайте это1010 * обычно не первое, что вызывает ОС при выполнении программы.Функция main
- это функция, вызываемая средой выполнения.Адрес первой выполняемой инструкции обычно объявляется в некоторых метаданных, обычно в начале, если исполняемый файл.
Ничто из вышеперечисленного не противоречит стандарту C / C ++, насколько я могу судить, покапоскольку есть только один, что имеет смысл, так как ОС не будет знать, куда звонить, если их было больше одного.Проверка только одного не выполняется в компиляторе, это делается в компоновщике.