mikrocontroller.net

Forum: PC-Programmierung Symbolzuweisung in library


Autor: Pinky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
ich programmiere derzeit einen ATtiny26 mit CodeVision C-Compiler.
Mein
Problem ist, denke ich, im wesentlichen ein reines C Problem. Ich
verwende einen DAC12 Bit. Für die Ansteuerung des DACs schreibe ich
eine Library. Nun möchte ich diese Library später vielleicht in
anderen
Projekten verwenden, deshalb wollte ich folgendermaßen vorgehen:
In der Library werden nur symbolische Zuweisungen gemacht, z.B.
CLK=1;
SDI=0;
CLK=0;

Noch vor dem includen der Library muss man dann den Symbolen den
richtigen PORT zuweisen, also insgesamt in etwa so:

#define CLK PORTA.7
#define SDI PORTA.6
#include <dac.h>

Wenn ich nun kompiliere, dann bekomme ich die Fehlermeldung
"undefined
Symbol", also hat er den Text nicht ersetzt.

Wie bekomme ich dieses Problem in den Griff?

Stehen die define Befehle in der Library geht es. Dies ist aber nicht
Sinn und Zweck, da ich die Library bei anderen Projekten mit anderer
Pinbelegung auch verwenden möchte.

P.s.: Hab den gleichen Thread auch im µC Forum eröffnet, da ich mir
nicht sicher bin, wo er denn jetzt genau hingehört ?!

Gruß und Mahlzeit

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Wenn ich nun kompiliere, dann bekomme ich die Fehlermeldung
"undefined Symbol", also hat er den Text nicht ersetzt."

Welches Symbol ist undefiniert bzw. welcher Text wurde nicht ersetzt?
CLK, SDI oder PORTA? Du solltest dir die Ausgabe vom Präprozessor
anzeigen lassen und dann die Frage überdenken. Optionen beim GCC:

-E (nur Preprozessor laufen lassen)
und -o Ausgabedatei

Autor: Pinky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stefan,
das erste Symbol, welches auftaucht, hier CS, bemäkelt er als undefined
symbol.
Die Ausgabe des Präprozessors werde ich mir mal anschauen. Es kann ja
auch sein, dass er in der Library auch keine Pre-Prozessor funktionen
unterstützt. Dann muss ich mir was anderes überlegen.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anmerkung:

Vermeide es, von "library" zu sprechen, wenn Du nur eine Headerdatei
(*.h) meinst. Das hilft beim Verständnis Deines Problemes.

Eine Library (*.a bei gcc, *.lib bei anderen) ist etwas ganz anderes,
nämlich bereits fertig übersetzter Binärcode, der zu Deinem Programm
hinzugelinkt wird. Libraries werden nur vom Linker verarbeitet;
irgendwelche Präprozessoranweisungen haben dabei keinerlei
Auswirkungen.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Symbol sehe ich aber in deinem fehlerproduzierenden Quelltext nicht.


Hast du inzwischen einen Weg gefunden, um dir die Präprozessor-Ausgabe
anzusehen?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.