Autor Thema: von C auf C++ Funktionen zugreifen.  (Gelesen 5012 mal)

Programm Noob

  • Gast
Gespeichert
« am: 12. November 2009, 15:27 »
Moin

Ich habe jetzt einen kleinen kernel, welcher in c geschrieben ist.
Nun möchte ich aber einige Funktionen gerne in c++ schreiben und wollte fragen ob dies so änlich möglich ist wie in assembler.

Programm Noob

Cool-Andy

  • Gast
Gespeichert
« Antwort #1 am: 12. November 2009, 15:55 »
Also,
wenn ich das jetzt richtig verstanden habe:
C++ in C --> meines Wissens nicht möglich!
C in C++ --> kein Problem!

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 12. November 2009, 16:04 »
Beide Richtungen sind möglich.

Einige grundlegende Fragen dazu werden hier ab Punkt 32.4 beantwortet: http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html
Dieser Text wird unter jedem Beitrag angezeigt.

Cool-Andy

  • Gast
Gespeichert
« Antwort #3 am: 12. November 2009, 16:38 »
Warum machst du dier überhaupt den Aufwand?
Nimm doch einfach C!  :wink:

Programm Noob

  • Gast
Gespeichert
« Antwort #4 am: 12. November 2009, 20:57 »
Moin

@Cool-Andy Ich möchte gerne C++ nutzen,weil ich sonst mit c++ programmiert habe, und diese Funktionen gerne in mein OS einbauen würde.

Wenn ich das jetzt so verstanden habe , muss ich nur in meinen c++ Code die Funktion als "Extern "C"" deklarieren. Beispiel:
extern "C" int Funktion(int Wert1, int Wert2);

int Funktion(int Wert1, int Wert2)
{
// Hier istdie Funktion
}

Habe ich das richtig verstanden :?

Programm Noob

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #5 am: 02. December 2009, 15:25 »
Ja, du darfst aber natürlich auch keine (nicht-trivial kon/destruierbaren) Strukturen/Klassen als Paramter oder Rückgabewert verwenden. Außerdem solltest du nicht Funktionen die du als extern "C" deklariert überladen, da extern "C" das c++ name mangling für diese Funktion ausschaltet.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

 

Einloggen