Forum: Compiler & IDEs C++ und Assemblerdateien


von Lars Lochmann (Gast)


Lesenswert?

Ich benutze avr-gcc
Ich habe eine Assemblerdatei in mein Projekt eingebunden. Wenn ich das 
C-File mit kleinem c schreibe (also den C-Compiler nutze) funktioniert 
alles. Schreibe ich es aber groß also nutze den C++ Compiler dann kommt 
eine Fehlermeldung.
Die Assemblerfunktionen der Assemblerdatei sind wie im Tutorial 
beschrieben eingebunden.
Also mit Assemblerfile:
.global lcd_init
.func lcd_init

.endfunc


Im Header hab ichs so:
extern void lcd_init(void);

Und im C-File (main) rufe ich es so auf:
lcd_init();

Und als Fehler sagt er mir:
undefined reference to `lcd_init()'

Wie gesagt mit dem C-Compiler funktioniert es. Weiß jemand warum der C++ 
Compiler damit Probleme hat?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

extern "C" void lcd_init(void);
http://www.cpp-tutor.de/cpp/le07/le07_03_d1.htm

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Oder für ein Headerfile, das sich beliebig einbinden lassen soll:
1
#ifdef __cplusplus
2
extern "C" {
3
#endif
4
5
void lcd_init(void);
6
7
#ifdef __cplusplus
8
}
9
#endif

Dazwischen darf auch mehr als eine derartige Deklaration stehen.

von Lars Lochmann (Gast)


Lesenswert?

Dankeschön! :-)
Es funzt jetzt und die Sache mit dem #ifdef ist hier sehr elegant. :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.