2017-03-15 1 views
1

Ich habe versucht, eine Datei hello-world.d mit llvm D-Compiler zu kompilieren und bekam diese Meldung:Mit Strichzeichen in Hauptquelldateinamen

Error: module hello-world has non-identifier characters in filename, 
use module declaration instead 

ich die Dokumentation gesucht, was ist ein Modul Erklärung und fügte dann

module hello_world; 

an den Anfang meiner Datei. Dann die Hallo-Welt-Datei kompiliert. Bitte erläutern Sie, warum das nötig ist, welchen Modulnamen ich für meine Hauptdatei verwenden soll.

Antwort

1

Kurz gesagt: Wenn Sie dem Modul keinen Namen geben, verwendet der D-Compiler den Dateinamen (ohne Erweiterung) als Modulname.

Also, wenn Sie Ihre D-Quelldatei hello-world.d nennen, und es muss nicht so etwas wie module hello_world; an der Spitze der Quelle-Datei, wird der Compiler versucht tatsächlich einzusetzen und zu kompilieren module hello-world; und das wird scheitern, weil hello-world nicht ist eine gültige Kennung Wenn der Dateiname für ein Beispiel hworld.d war, dann kompiliert der Compiler tatsächlich ein Modul mit dem automatisch generierten Namen hworld.

2

In D-Bezeichnern dürfen nur alphabetische, numerische oder Unterstriche enthalten sein. Ein Modulname ist auch ein Bezeichner, der die Pakete enthält.

Für den lateinischen Zeichensatz sind alphabetische Zeichen a-z und A-Z. Andere Zeichensätze, die von nicht lateinischen Sprachen verwendet werden, funktionieren auch (UTF-8-Unterstützung).

Nichts wirklich Besonderes, aber bedenken Sie, dass ein Modul (Include-Pakete) den Dateisystemnamen für Nachschlagezwecke (z. B. Importe) entsprechen muss.

+2

Sie müssen nicht übereinstimmen, wenn Sie alle Dateien gleichzeitig an dmd übergeben. –

Verwandte Themen