Was hat es auf sich mit "C"
-
Ich sehe in einigen C++ Programm sowas.
extern "C" Funktion(......
Was bedeutet das "C" ??? in meinem schlauen Buch finde ich nichts darüber.
-
wenn ich mich recht erinner, dann heist das das der compiler die C aufrufkonversation verwenden soll ( anstatt die C++ )
-
DEvent schrieb:
wenn ich mich recht erinner, dann heist das das der compiler die C aufrufkonversation verwenden soll ( anstatt die C++ )
Was ist der Unterschied?
-
In C gibt es keine Namesräume oder Klassen.
Folglich hat jede Funktion einen eindeutigen Namen.
Und unter dem sucht sie auch der Linker.In C++ ist nicht klar, ob es nicht auch noch in einer anderen klasse eine Methode printf gibt.
Deswegen heißt sie dann etwa printf12e@@r324fe3 ...
-
DEvent schrieb:
wenn ich mich recht erinner, dann heist das das der compiler die C aufrufkonversation verwenden soll ( anstatt die C++ )
Ich bezweifle das ein Compiler vor dem Aufruf eine Konversation betreibt
Du meinst sicher *Konvention*. Also eine Übereinkunft über den Ablauf eines Funktionsaufrufs (in welcher Reihenfolge werden Parameter auf denStack gelegt, wer räumt auf, wer sichert welche Register...) zwischen Aufrufer und Aufgerufenem.Was ist der Unterschied?
Ein ganz entscheidener Unterschied ist der, dass die Namen von C-Funktionen keinem "name mangling" unterliegen, da solche Funktionen nicht überladen werden können.
-
Was für einen Sinn soll das haben?
extern int Funktion(int a)
wird doch auch so funktionieren
extern "C" int Funktion(int a)
Also warum hat man sowas vorgesehen?
-
Es gibts z.B. DLLs, die in C geschrieben wurden.
Solche stellen ihre Funktionen anderen Programmen zur verfügung.Dadurch, dass sich von anderen Programmiersprachen im "C Stil" aufgerufen werden, können sie eben auch benutzt werden.
-
HumeSikkins schrieb:
Ich bezweifle das ein Compiler vor dem Aufruf eine Konversation betreibt
Wieso nicht? Vielleicht hat er ja 'nen kleinen Plausch mit dem Präprozessor.
-
C ist nich dasselbe wie C++
sind zwei sehr ähnliche aber doch unterschiedliche sprachendie bibliothek libc stellt dir funktionen wie printf zur verfügung,
die in C geschrieben wurdensolche funktionen kannst du von den meisten programmiersprachen aus aufrufen
damit dus von c++ aus aufrufen kannst musst du halt extern "C" hinschreiben
durch die ähnlichkeit zwischen C und C++ kann man für beide "fast" den gleichen header verwenden
will man dieselbe funktion von visual basic aus aufrufen muss man z.b. nen neuen header extra für vb schreibenkannst es ja mal ausprobieren
mach einfach n projekt mit ner .cpp und ner .c datei