Heim > Backend-Entwicklung > Golang > Wie tragen Schrägstriche und Mittelpunkte im C-Quellcode von Go zum Namensraum und zur Verknüpfung von Funktionen bei?

Wie tragen Schrägstriche und Mittelpunkte im C-Quellcode von Go zum Namensraum und zur Verknüpfung von Funktionen bei?

Susan Sarandon
Freigeben: 2024-11-08 12:11:01
Original
615 Leute haben es durchsucht

How do slashes and middots in Go’s C source code contribute to function namespacing and linking?

Schrägstriche und Punkte in Funktionsnamen und Prototypen in der C-Quelle von Go

Der C-Quellcode von Go, am Beispiel der Datei „race.c“, enthält eine nicht standardmäßige Zeichenverwendung, die Fragen zu ihrer Gültigkeit aufwirft.

Erweiterung zu C Standard

Der für Go verwendete C-Compiler, der auf dem Plan 9 C-Compiler basiert, erweitert den Standard um Unterstützung für UTF-8-Zeichen in Bezeichnern. Eine bemerkenswerte Erweiterung ist die spezielle Behandlung des Middot-Zeichens (·).

Middot- und Namespace-Trennung

Der Middot dient als Namespace-Trennzeichen im internen Verknüpfungsprozess von Go. Beim Kompilieren einer C-Datei mit UTF-8-Bezeichnern wird der Mittelpunkt in Objektdateien in einen Punkt (.) übersetzt. Der Go-Linker interpretiert diesen Punkt als Namespace-Trennzeichen.

Beispiel

Betrachten Sie den folgenden C-Code, der in UTF-8 ohne BOM geschrieben wurde:

<code class="c">void ·Bar1() {}
void foo·bar2() {}
void foo∕baz·bar3() {}</code>
Nach dem Login kopieren

Das Kompilieren dieses Codes erzeugt die folgenden Symbole:

$ go tool 8c example.c
$ go tool nm example.8
T "".Bar1
T foo.bar2
T foo∕baz.bar3
Nach dem Login kopieren

Beachten Sie, dass „“Bar1() hat ein großes B, um es für Go-Code sichtbar zu machen. Es entspricht der Go-Funktion „func Bar1() {}“ hinsichtlich des resultierenden Symbols.

Der „Leere“ Namespace

Der „“ Namespace ist ein spezieller Namespace, der als Platzhalter verwendet wird. Beim Importieren eines Pakets unter Verwendung dieses Namespace, wie in:

<code class="go">import examp "path/to/package/example"

func main() {
    examp.Bar1()
}</code>
Nach dem Login kopieren

Der Linker ersetzt „“ während des Imports durch den tatsächlichen Paketpfad. Somit finden wir in der verknüpften Binärdatei das folgende Symbol:

T path/to/package/example.Bar1
Nach dem Login kopieren

Fazit

Die Schrägstriche und Mittelpunkte in Gos C-Quelle erweitern den Standard und stellen a Möglichkeit, Namensräume zu benennen und Funktionsnamen zu unterscheiden. Diese Konvention erleichtert das Erstellen und Verknüpfen von Go-Anwendungen.

Das obige ist der detaillierte Inhalt vonWie tragen Schrägstriche und Mittelpunkte im C-Quellcode von Go zum Namensraum und zur Verknüpfung von Funktionen bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage