Maximale Bezeichnerlänge

8

Wo finde ich die maximale Bezeichnerlänge in C?

In welcher Headerdatei ist dieses Limit angegeben?

    
Devel 28.02.2010, 18:58
quelle

3 Antworten

21

Es gibt keine Header-Datei, die das Bezeichner-Längenlimit enthalten soll; selbst wenn es da wäre, wie könnte es dir helfen? Sie können die Bezeichnerlänge zum Zeitpunkt der Kompilierung auf der Grundlage eines Wertes in einer Headerdatei sowieso nicht ändern.

Der C-Standard , Abschnitt 5.2.4.1 sagt:

  
  • 63 signifikante Anfangszeichen in einer internen Kennung oder einem Makronamen (jeder universelle Zeichenname oder jedes erweiterte Quellzeichen wird als einzelnes Zeichen betrachtet)
  •   
  • 31 signifikante Anfangszeichen in einer externen Kennung (jeder universelle Zeichenname, der eine Kurzkennung von 0000FFFF oder weniger angibt, wird als 6 Zeichen betrachtet, jeder universelle Zeichenname, der eine Kurzkennung von 00010000 oder mehr angibt, wird als 10 Zeichen und jede erweiterte Quelle betrachtet Zeichen wird als die gleiche Anzahl von Zeichen wie der entsprechende universelle Zeichen-Name, falls vorhanden,
  • betrachtet   

Es enthält auch eine Fußnote:

  

Implementierungen sollten möglichst keine festen Übersetzungsgrenzen auferlegen.

Sie sollten also in Ihrer Dokumentation überprüfen, ob Ihr Compiler eine größere Anzahl signifikanter Zeichen in Bezeichnern unterstützt.

    
Carl Norum 28.02.2010, 19:01
quelle
8

Es gibt keinen Header, der Ihnen sagt. Sie müssen eine fundierte Entscheidung treffen, basierend auf den Plattformen, auf die Sie wahrscheinlich portieren werden. Carl Norum wies darauf hin, was der C99-Standard sagt.

Es war einmal, man konnte sich nur auf 6 eindeutige Zeichen für externe Variablen verlassen, weil das in einigen Mainframe-Umgebungen möglich war. (Dies ist, was der C89-Standard sagte - aber es stellte fest, dass die Begrenzung schmerzhaft war.)

Heutzutage können Sie sich, teilweise wegen der typsicheren Verknüpfung in C ++, auf wesentlich längere Namen für externe Symbole verlassen. Wenn Sie anfangen, über 31 Zeichen zu treiben, können Sie Probleme bekommen - aber Sie stoßen auch auf Lesbarkeitsprobleme.

    
Jonathan Leffler 28.02.2010 19:06
quelle
3

Kurz gesagt gibt es keine Headerdatei, die Ihnen sagen könnte, dass dies Teil einer ANSI / ISO C-Standardspezifikation ist, die das Layout der Syntax und des Umgebungsmechanismus für die C-Sprache selbst definiert. In Prä-C89-Standards war die maximale Bezeichnerlänge aufgrund der kleinen Speicherabdrücke und der Umgebung auf solchen Systemen wie Mainframes und * nix-Systemen 6.

Heute ist der neueste Standard C99-Standards, die vorschreiben, dass die maximale Länge für einen Bezeichner 32 sein soll, der Grund ist ziemlich einfach und logisch ... der Compiler arbeitet durch Parsen des Eingabestroms, der als Befehl übergeben würde Zeilenargument, Makefile oder eine Lösung (für Microsoft Visual Studio-Umgebungen), der Parser ist starr und fest und daher die auferlegten Einschränkungen für die Länge des Bezeichners, damit der Parser nach vorne schauen und sehen kann, ob noch weitere Zeichen vorhanden sind. Dafür ist es verantwortlich.

Ein weiterer Grund ist, dass die meisten C ++ - Compiler einen Namensmangel auf den Bezeichnern verwenden, was Jonathan Leffler darauf hinwies, was den Compiler und auch die Verknüpfung des Codes verwirren könnte.

Hoffe, das hilft, Freundliche Grüße, Tom.

    
t0mm13b 28.02.2010 19:38
quelle

Tags und Links