![]() |
extern int ProcName oder int ProcName - Ansi C
Wo liegt den Unterschied zwischen 2 Deklarationene:
Code:
Denn, soviel ich weis sind alle Funktionen in C, die nicht als static Deklariert worden sind, external sind? Oder ?
// Fall 1
extern int ProcName ( smoe Params...); // Fall 2 int ProcName ( smoe Params...); |
Re: extern int ProcName oder int ProcName - Ansi C
"extern" für eine Funktion (bzw. Prozedur) macht keinen Unterschied zur normalen Deklaration.
Relevant ist "extern" eigentlich nur für Variablen, weil man ohne das "extern" ja eine neue Variable erzeugen würde anstatt sie nur zu deklarieren (d.h. bekannt zu machen). |
Re: extern int ProcName oder int ProcName - Ansi C
Wenn das ganze in einer Biblithek steckt, könnte es Auswirkungn auf das "Name Mangling" haben. Soweit ich weiß, werden als extern deklarierte Funktionen nicht "in die Mangel genommen" (man verzeihe mir das schlechte Wortspiel), andere schon.
|
Re: extern int ProcName oder int ProcName - Ansi C
@Chewie: korrekt, besonders wenn diese externe Funktion nicht in einem C Source sondern in einem Assembler Source steht und der Linker diese von dort einlinken muß.
Gruß Hagen |
Re: extern int ProcName oder int ProcName - Ansi C
Die eigentliche Funktion befindet sich in einer *.c datei in einem Projekt der zu einem *.exe Kompiliert wird.
Code:
Ich sollte das jetzt in Dephi übersetzen.
extern int SomeFunc( type1 param1, type2 param2)
{ // code } |
Re: extern int ProcName oder int ProcName - Ansi C
@Chewie, Hagen: in einer C-Datei wird kein Name-Mangling gemacht - ich kenne zumindest keinen Compiler der mehr macht, als einen Unterstrich vorne anzufügen (Ok, MS-C macht bei stdcall 'nen @# hintendran wg. Parametercount).
In C++ sieht das anders aus, dafür gibt's dort aber auch das Konstrukt
Code:
bzw.
extern "C" <deklaration>;
Code:
@sniper_w: was du hingeschrieben hast, widerspricht sich eigentlich - du hast die Funktion als "extern" deklariert und definierst sich auch gleich noch im Anschluss?
extern "C" {
<deklarationen> } |
Re: extern int ProcName oder int ProcName - Ansi C
Code:
Das soll ich übersetzen, habe es nicht selbst ausgedacht.
extern int unzClose (unzFile file)
{ |
Re: extern int ProcName oder int ProcName - Ansi C
Zitat:
|
Re: extern int ProcName oder int ProcName - Ansi C
@Flocke: kannte ja den implementierenden C Source noch nicht. Mit dem nun für mich sichtbaren Informationen macht das extern wirklich keinen Sinn. Ich benutze es, bzw. muß es zwingend benutzen, wenn ich mit GCC meine externen ASM Sourcen durch ein Headerfile einlinken will.
Gruß Hagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz