Ich versuche, eine Ada-Einheit zu kompilieren, deren Spezifikationen mit drei Level-Paketnamen wie Paket ABC deklariert sind, aber die Kompilierung schlägt fehl, dass es keine Einheit gibt AB Das ist es scheint nur nach Dateien mit dem Namen AB.ads und nicht nach ABC.ads zu suchen. Wie bekomme ich gcc, um nach der richtigen Datei zu suchen? Danke für jede Hilfe.Gcc erkennt keine Ada mit Einheit
Antwort
with A.B.C;
bedeutet with
sowohl A
und A.B
, als auch A.B.C
. Es sucht also nach der richtigen Datei, aber es braucht auch die anderen beiden. Stellen Sie sicher, dass alle Abhängigkeiten in Ihren Suchpfaden verfügbar sind.
Stellen Sie außerdem sicher, dass Ihre Dateinamen klein geschrieben sind (a.ads
, a-b.ads
, a-b-c.ads
), da dies von GNAT/gcc erwartet wird.
Der Punktoperator hat eine besondere Bedeutung einer Beziehung zwischen Ada-Paketen. with A.B.C
bedeutet, dass Paket C ein Kind von Paket B ist und B ein Kind von Paket A ist. Dies bedeutet, dass, wenn kein Elternpaket vorhanden ist, das Kindpaket auch nicht verwendet werden kann. Mit anderen Worten, um die Anweisung with
für ein untergeordnetes Paket zuzulassen, muss ein übergeordnetes Paket vorhanden sein, das leer sein kann. So müssen Sie Pakete A ein B wie wie folgt erstellen:
-- Spec
package A is
-- Empty spec
end A;
-- Spec
package A.B is
-- Empty spec
end B;
-- Spec
package A.B.C is
-- Definitions of package C
end C;
Beachten Sie, dass, wenn ein spec Verfahren nicht hat, ist es kein Paket Körper hinzufügen. Beachten Sie auch, dass die Angabe with A.B.C
with A
und with A.B
von der Konfiguration des Laufzeitsystems abhängig ist.
- 1. Ada Compilation "enthält keine erwartete Einheit"
- 2. Raycast erkennt keine Trefferobjekt-Einheit C# 2d
- 3. gcc mingw Compiler erkennt CancelIOEx nicht
- 4. Auswahlsortierung mit Ada
- 5. UITextView erkennt keine Berührungseingabe
- 6. Ada Toolchain für Windows CE
- 7. matplotlib erkennt keine Schrift
- 8. Operator + erkennt keine Typen
- 9. Kann keine Einheit mit träges Laden Elemente
- 10. NSFetchedResultsController erkennt keine Löschungen
- 11. Bluetooth erkennt keine Geräte
- 12. Eclipse erkennt keine Breakpoints
- 13. GetAsyncKeyState erkennt keine Mauseingabe
- 14. aframe erkennt keine Tagtraumsteuerung
- 15. scintilla erkennt keine Zeilenumbrüche
- 16. Excel erkennt keine Daten
- 17. Vue.js erkennt keine Datenschlüssel
- 18. Chrome erkennt keine Vollbildänderung
- 19. JavaCC erkennt keine Token
- 20. Eingabeaufforderung erkennt keine Gleichheit
- 21. NCrunch erkennt keine Umgebungsvariable
- 22. Programm erkennt keine Lösung
- 23. Wamp erkennt keine Projekte
- 24. Spock erkennt keine Methodenaufruf
- 25. Starten fehlgeschlagen keine Binärdateien - GCC mit Eclipse
- 26. Keine Warnung, wenn NULL mit gcc
- 27. Ada Cross-Compiler für iOS zielt
- 28. Einheit: WebGL bauen keine benutzerdefinierten UnityProgress.js
- 29. Pydev erkennt keine Python-Installation mit Django
- 30. GameObject erkennt keine Kollision mit Floor
Sie können einen ansonsten verbotenen Paketkörper haben, wenn Sie 'pragma Elaborate_Body;' (oder den entsprechenden [aspect] (http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-K-) hinzufügen. 1.html # p22)) zur Spezifikation. Und ich glaube nicht, dass die RTS-Konfiguration irgendetwas damit zu tun hat, ob 'mit Ada.Strings.Unbounded;' impliziert, dass 'Ada.Strings' sichtbar ist (ist). –