Frage

In Abschnitt 3.6.1.2 der beiden C ++ Standard-1998 und 2003 Ausgaben,

  

Eine Implementierung wird die Hauptfunktion nicht vordefinieren. Diese Funktion darf nicht überlastet werden. Es sollte   haben einen Rückgabetyp vom Typ int, aber sonst seine Art ist die Implementierung definiert.

Ich bin kein Englisch als Mutter speaker.I nicht sicher, was bedeutet „aber ansonsten“ means.Whether es ist, den anderen Rückgabetyp zu verbieten, oder das Recht auf C ++ Compiler Schriftsteller zu geben?

Also, was ist die Antwort?

War es hilfreich?

Lösung

Das Englisch Sie Zitat nicht verbietet main zu Rückkehr void erklärt. Es ist erlaubt Variation in den Argumenten, die hereinkommen, aber nicht in dem Rückgabetyp.

Andere Tipps

Aaargh! Ja tut es. Die einzige von der Norm erlaubt Rückgabetyp ist int. Zitat aus Abschnitt 3.6.1:

  

Es wird einen Rückgabetyp vom Typ hat   int, aber sonst seine Art ist   Implementierung definiert.

was bedeutet, es könnte wie folgt aussehen:

int main( float f );
int main( int x, int y );

usw. etc.

Der Typ enthält mehr als nur den Rückgabetyp. Daher muss der Rückgabetyp int sein, aber Sie sind frei, die verbleibenden Argument unter Berücksichtigung, das heißt Sie können zum Beispiel, wählen Sie zwischen

int main()

und

int main(int argc, char **argv)

Die Norm sagt, dass der Rückgabetyp int sein muss, sondern dass der Rest der Art der Umsetzung ist nach oben. Zum Beispiel könnten Sie ein Standard-konform machen (aber nicht sehr nützlich) C ++ Compiler, dass verwendet wird.

int main(int secondsSinceSystemStart, int myFavoriteNumber, char* aFunnyJoke)

Wikipedia :

  

In C und C ++, der Funktionsprototyp der Hauptfunktion sieht aus wie eine der folgenden:

int main(void)
int main(int argc, char **argv)
     

Die Parameter argc, argument Zahl und argv, Argumentvektor, geben jeweils die Anzahl und den Wert der Befehlszeilenargumente des Programms. Die Namen von argc und argv kann jeder gültige Bezeichner sein, aber es ist üblich, Konvention, diese Namen zu verwenden. Andere plattformabhängige Formate werden auch durch die C und C ++ Standards erlaubt; zum Beispiel Unix (wenn auch nicht POSIX.1) und Microsoft Visual C ++ ein drittes Argument haben die Programmumgebung, sonst zugänglich durch getenv in stdlib.h geben:

int main(int argc, char **argv, char **envp)
     

Mac OS X und Darwin haben einen vierten Parameter beliebige OS gelieferten Informationen, wie zum Beispiel des Pfad zur Ausführung binären enthält:

int main(int argc, char **argv, char **envp, char **apple)

Soweit Parameter Bedeutung sind, erlaubt es

  1. int main ()

  2. int main (int argc, char * argv [])

  3. int main (int argc, char * argv [] char * envR [])

Aber gemäß dem Standardrückgabetyp sollte int für Konsistenz Zweck.

Die Absicht ist zu sagen, dass Aspekte der Art der main anderen Funktion als der Rückgabetyp sind Implementierung definiert. Das bedeutet, dass diese Erklärung von dieser Klausel der Norm erlaubt ist:

int main(int fred, char *bouncy);

aber nicht diese:

void main(int fred, char *bouncy);

Der Rückgabetyp muss sein int, aber die Umsetzung ist erlaubt unterschiedliche Argumenttypen zu haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top