Was ist, wenn ich main als Referenz für die Funktion definiere?C++ "Haupt" als Referenz für die Funktion angeben?
#include<iostream>
#include<cstring>
using namespace std;
int main1()
{
cout << "Hello World from main1 function!" << endl;
return 0;
}
int (&main)() = main1;
Was wird passieren? Getestet habe ich in einem Online-Compiler mit Fehler "Segmentation fault":
Und unter VC++ 2013 wird es ein Programm abstürzt zur Laufzeit erstellt!
Ein Code, der die Daten des Funktionszeigers als Code aufruft, wird kompiliert, der beim Start sofort abstürzt.
Ich möchte auch ein ISO C++ Standard-Zitat darüber.
wird das Konzept sinnvoll sein, wenn Sie entweder von zwei Einstiegspunkte in Abhängigkeit von einigen Makro wie folgt definieren wollen:
int main1();
int main2();
#ifdef _0_ENTRY
int (&main)() = main1;
#else
int (&main)() = main2;
#endif
_ "Was wird passieren? Ich habe in einem Online-Compiler mit Fehler 'Segmentierung Fehler' getestet" _ Sie haben gerade Ihre eigene Frage beantwortet, nicht wahr? –
Sie schließen freistehende Implementierungen aus, korrekt? –
Es ist kein ISO C++ Standard Zitat, aber http://en.cppreference.com/w/cpp/language/main_function ist normalerweise ziemlich genau. Es besagt speziell, dass main eine spezielle Funktion ist und eine dieser "speziellen" Eigenschaften ist, dass die Adresse nicht vergeben werden kann. – qeadz