Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 11:48

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



typedef Zeiger auf Funktionen

Discussion on typedef Zeiger auf Funktionen within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Sep 2010
Posts: 24
Received Thanks: 2
Question typedef Zeiger auf Funktionen

houi

Bis jetzt kannte ich "typedef" nur in so einer form:
Code:
typedef char* byte_pointer;
Gerade was neues entdeckt und bin mir nicht sicher ob ich das richtig verstanden habe:
Code:
typedef void (*terminate_handler)(); 

terminate_handler set_terminate(terminate_handler f) noexcept;
1:ist "terminate_handler" eine abkürzung für "void (*terminate_handler)();" ?
2:wenn ja, dann ist:
terminate_handler set_terminate(terminate_handler f) noexcept; == void (*terminate_handler)() set_terminate(void (*terminate_handler)() f ) noexcept; ?
3:wenn ja, wofür istn " f " da, hier also : set_terminate(terminate_handler f) ?
ExHack is offline  
Old 07/12/2013, 14:04   #2
 
Padmak's Avatar
 
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
Es sieht so aus, als würde die set_terminate-Funktion den vorher gespeicherten Handler zurückgeben, darum ist der Rückgabetyp auch terminate_handler
Vergleichbar damit:
Code:
int set_terminate(int f) 
{ 
    int ret = m_f;
    m_f = f;
    return ret;
}
Und natürlich ist terminate_handler eine "Abkürzung", dafür typedefst du es doch^^
Also:
1. Ja, quasi schon
2. Ja, quasi schon
3. Siehe mein Codebeispiel, einfach der erste Parameter der Funktion

Padmak
Padmak is offline  
Thanks
1 User
Old 07/12/2013, 14:32   #3
 
elite*gold: 0
Join Date: Sep 2010
Posts: 24
Received Thanks: 2
Quote:
Originally Posted by Padmak View Post
... einfach der erste Parameter der Funktion
gehört das "f" jetzt zu set_terminate oder zu terminate_handler,
muss man das dann nicht durch ein Komma trennen also :
terminate_handler set_terminate(terminate_handler, f) noexcept;
?
Der typ von f fehlt auch ...
ExHack is offline  
Old 07/12/2013, 14:43   #4

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,480
Received Thanks: 3,319
terminate_handler ist der Datentyp, f ist das Argument vom Typ terminate_handler.

terminate_handler ist eine Übersetzung für void (*)(), also einen Zeiger auf eine Void-Funktion ohne Argumente.
Die Funktion an sich gibt also einen Zeiger auf eine Funktion von diesem Typ zurück und nimmt einen solchen als Argument. Damit du innerhalb der Funktion mit dem Argument arbeiten kannst, ist das f da.
Stell dir, wie von Padmak bereits geschrieben, das ganze mit int statt mit terminate_handler vor, dann sieht das so aus:

int /* return Typ */ set_terminate(int /* Typ des Arguments */ f /* Name des Arguments */) { ... }
snow is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
Anderer Maus zeiger
05/30/2013 - Web Development - 5 Replies
Hallo, wie kann man den Maus Zeiger im bereich der Hp verändern? Müsste mit CSS gehen?
Maus Zeiger als BMP
08/02/2011 - elite*gold Trading - 0 Replies
Hallo ich suche jemanden der mir meinen Maus zeiger (siehe anhang) in eine BMP datei umwandelt (Bild datei) wichtig ist .BMP ! bitte nicht einfach umbennen den das geht nicht. es soll halt ein bild von dem mauszeiger in 1:1 größe sein mit transparenten hintergrund Wenns klappt erhaltet ihr von mir 1 elitegold :)
C++ | Zeiger Fragen
06/23/2011 - C/C++ - 14 Replies
Ich hätte da einige Frage. 1: Was ist eine Speicheradresse? 2: Warum ändert sich immer die Adresse, wenn ich mir die Adresse anschauen möchte? 3: Wenn ich jetzt einen Zeiger erstelle int Var; int *Pointer = &Var; cout << Pointer << endl;
[HOOK][C++] #define, typedef und __stdcall Problem
12/08/2010 - C/C++ - 1 Replies
Hi, ich habe versucht mir die Arbeit mit dem Detour n bissl zu vereinfachen, aber iwie hänge ich gerade an einem Problem wo ich nicht weiterkomme, weil immer kommt der Fehler: error C2143: Syntaxfehler: Es fehlt ')' vor '__stdcall' das ist mein #define #define HOOK(Function,Paramter,Paramter2,Paramter3,Paramte r4) (typedef int (WINAPI *Function)(Parameter,Parameter2,Parameter3,Paramet er4)) #define HOOK2(Function,Variable) (Detour<Function> Variable)



All times are GMT +2. The time now is 11:48.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.