2017-03-18 3 views
-1

Für das folgende Programm, einige Compiler führen Sie es mit einer WarnungWas passiert mit einem Argument in main()?

3:5: warning: 'int main(int)' takes only zero or two arguments [-Wmain] 

und einige ohne. Kann ich main() mit einem Argument verwenden?

#include <iostream> 

int main(int x) 
{ 
    x = 5; 
    std::cout << x; 
    return 0; 
} 
+0

Es spielt nicht das Spiel. –

+6

Der C++ - Standard spezifiziert die Argumente für die 'main'-Funktion. Ein einzelnes int-Argument gehört nicht zu den gültigen Alternativen. Siehe z.B. [diese 'Hauptfunktionsreferenz] (http://en.cppreference.com/w/cpp/language/main_function) für weitere Informationen. –

+2

@Someprogrammerdude, Nicht zu den erforderlichen Alternativen, aber immer noch gültig, wenn die Implementierung es unterstützt (Quelle: http://eel.is/c++draft/basic.start.main#2) – chris

Antwort

4

Die C++ Standard §3.6.1/2 sagt folgendes über die main Funktion:

Es soll int, einen Rückgabetyp von Typ, aber sonst seine Art ist die Implementierung definiert .

int main() { /* ... */ } 

und

int main(int argc, char* argv[]) { /* ... */ } 

es ist also letztlich bis zu Ihrem Compiler, um zu entscheiden, ob int main(int x) in Ordnung ist oder nicht: Alle Implementierungen sind die beiden folgenden Definitionen von main zu ermöglichen. Es versteht sich von selbst, dass die Verwendung einer solchen main-Funktion Ihren Code nicht tragbar macht.

+0

@ Christian Hackl, Für mich, ein Anfänger in C++, scheint es so viele C++ - Compiler wie viele C++ s zu geben. Übrigens, was argc, char * und argv bedeuten?Ich weiß, dass ich in main() Körper nicht nur Kommentare schreiben kann, sondern viele mehr, einschließlich Variablen Definitionen, Anweisungen, Funktionsaufrufe. –

+0

@GeorgeTheodosiou: Wir können dir C++ nicht so beibringen. Du brauchst ein gutes Buch, das solche grundlegenden Dinge erklärt. –

+0

@ Christian Hackl: Schlägst du mir einen on-line vor? –

Verwandte Themen