Gibt es eine maximale Anzahl von Parametern für Funktionen in C mit dem gcc (bzw. MinGW) Compiler?

8

Ich weiß, dass ich niemals solch eine Grenze erreichen würde, wenn ich guten Praktiken folge. Allerdings muss ich eine automatisch generierte Funktion mit vielen Parametern verwenden (und ich kann damit nichts ändern, ich bekomme die Funktion von jemand anderem).

Also: Wie viele Parameter kann ich maximal in gcc verwenden? MinGW?

Ich habe dies über die C ++ - Sprachspezifikation herausgefunden. Und dies zu den Standardgrenzwerten der C-Sprache. Was mich interessiert, ist die Frage, was die Grenzen der "realen Welt" sind / Einzelheiten der Implementierung. Vor allem in gcc und MinGW.

Auch: Welche Art von Fehlermeldung könnte ich erwarten, wenn ich ein solches Limit erreiche? Und macht es bei der Verwendung von C-Code in einer C ++ - Anwendung über die Deklaration extern "C" einen Unterschied für das "normale" C-Limit? Es können hier andere Grenzen als die Anzahl von Parametern gelten, z. etwas wie eine maximale Zeilenlänge? Oder die maximale Stapelgröße?

Danke!

    
mozzbozz 30.09.2014, 13:24
quelle

3 Antworten

10

Der C-Standard 5.2.4.1 sagt:

%Vor%

auch die Stack-Größe (1MB - 8MB) ist ein Limit, wenn Sie riesige Strukturen als Argumente haben.

Aber all diese Grenzen sind weit weg von allem, was gute Praxis ist.

Ссылка sagt, dass gcc viel höhere Limits hat ( nur durch verfügbaren Speicher begrenzt ).

    
mch 30.09.2014 14:02
quelle
1

In C gibt es spezielle Bibliotheken (stdarg.h) für mehrere Parameter. Mit dieser Bibliothek können Sie Funktionen wie folgt schreiben:

%Vor%

Und ich glaube nicht, dass es eine bestimmte Grenze gibt.

Hier ist ein Beispiel, wie man diese Bibliothek benutzt: (Dank an: Ссылка )

%Vor%     
Rizier123 30.09.2014 13:29
quelle
-3

Standard wusste nicht, aber über den Stapel können Sie eine beliebige Anzahl von Parametern übergeben, wenn durch Register gehen, die Menge durch die Anzahl der Register begrenzt. In der Sprache c können Sie Strukturen nach Wert über Stapel übergeben.

    
Ivan Ivanovich 30.09.2014 13:45
quelle

Tags und Links