Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 03.08.2004, 21:24 Titel: |
|
|
TheMillenium hat Folgendes geschrieben: | Ich bezweifle aber, dass man den Variablennamen in ein String umwandeln kann, oder geht das? |
Das ginge vielleicht, wenn man eine Variable sozusagen "registriert".
Dann übergibt man eine Referenz der Variable+dazugehörigen String.
In einem "Pool" z.B. einer STL-Map wird dann der Pointer einem string zugeorndet bzw. eher anders herum.
Beim Protokoll übergibt man dann den Pointer und erhält einen string _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
C++Builder Senior JLI'ler
Anmeldedatum: 04.10.2003 Beiträge: 235
Medaillen: Keine
|
Verfasst am: 03.08.2004, 21:24 Titel: |
|
|
TheMillenium hat Folgendes geschrieben: | Cool wäre sowas:
Profile(Funktion(param1,param2);
|
das dürfte sehr schwer werden. Wenn du mit Funktionspointern arbeitest musst du für jeden verschiedenen Parameter und jeden verschiedenen Rückgabewert die Funktion Profile überladen. Und an den Namen der Funktion kommst du auch nicht ran. |
|
Nach oben |
|
|
Cyianor Super JLI'ler
Anmeldedatum: 23.12.2002 Beiträge: 452
Medaillen: Keine
|
Verfasst am: 03.08.2004, 21:25 Titel: |
|
|
in neueren VC++ Versionen gibt es __FUNCTION__ funktioniert aber erst ab Version 7. |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 03.08.2004, 21:34 Titel: |
|
|
TheMillenium hat Folgendes geschrieben: | Cool wäre sowas:
Profile(Funktion(param1,param2);
Dass sich die Funktion den Funktionspointer schnappt aufruft und profiled, irgendwie auch den Namen der Funktion ermitteln kann und in die Statistik einträgt...Ich bezweifle aber, dass man den Variablennamen in ein String umwandeln kann, oder geht das? |
Dafür könnte man doch prima ein Macro verwenden:
Code: |
#define PROFILE(name,retvalue) ProfileSample(#name); retvalue=name;
#define PROFILE(name) ProfileSample(#name); name;
...
int Foo(float in)
{
return in;
}
void Foo2(char *in)
{
...
}
void Bar()
{
int a;
PROFILE(Foo(100.0), a);
PROFILE(Foo(200.0), int b);
PROFILE(Foo2("Hallo"));
PROFILE(int c=Foo(100.0));
PROFILE(int *feld=new int[1000]);
PROFILE(
int *d;
if(100==100)
d=new int[1000];
else
d=new int[2000];
for(int i=0; i<100; i++)
d[i]=i;
delete [] d;
);
}
|
_________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 03.08.2004, 22:21 Titel: |
|
|
Und das übergibt meiner Profilefunktion auch den Namen der Funktion?
z.B.
Profile(MyFunc(param));
und dann kann so eine Ausgabe erfolgen:
MyFunc: 17ms _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 03.08.2004, 22:43 Titel: |
|
|
naja fast die Ausgabe würde dann so ungefähr aussehen:
MyFunc(param): 17ms
aberwenn du das macro erweiterst das alles ab dem ersten ( Zeichen gelöscht wird sollte es auch klappen. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 04.08.2004, 06:39 Titel: |
|
|
Cool. Funktioniert. Danke!
Gibt es eine Seite wo du das her hast?
mehr als #define und #ifndef kenne ich nicht....
Und Makros scheinen ja ziemlich nützlich zu sein. _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 04.08.2004, 11:34 Titel: |
|
|
Das ist in der MSDN drin. Ich habs mal gebraucht und so herausgefunden.
Einfach nach # suchen. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
|