Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

ime funkcije koja se izvrsava

[es] :: C++ programiranje :: ime funkcije koja se izvrsava

[ Pregleda: 954 | Odgovora: 10 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Neznalica_sa_ugla
split

Član broj: 83282
Poruke: 212
*.xnet.hr.



Profil

icon ime funkcije koja se izvrsava04.06.2006. u 11:28

Kako u c++ treba da izgleda nesšo kao GetFunctionName -> ime funkcije koja se izvrsava ili
nekoliko njih prije ??
HVALA


LJUDI MOZE LI MI IKO POMOCI , DAJATE BAREM GDJE TO MOGU PROČITATI !!!!

hVALA DRAGOM TATI , ALI MAMI TO BAŠ I NE POMAŽE


Hvala svima koji se javise , sve ove primedbe su mi pomogle i resavaju mi problem u 95 %


[Ovu poruku je menjao Neznalica_sa_ugla dana 17.06.2006. u 08:33 GMT+1]
04.06.2006. u 11:28 

Dragi Tata

Član broj: 1958
Poruke: 3880
*.hsd1.ma.comcast.net.

Sajt: www.novetehnologije.com


Profil

icon Re: ime funkcije koja se izvrsava04.06.2006. u 13:23
Neki kompajleri imaju definisan makro __FUNCTION__ za tu svrhu, ali to nije deo standarda.
04.06.2006. u 13:23 

Neznalica_sa_ugla
split

Član broj: 83282
Poruke: 212
*.xnet.hr.



Profil

icon Re: ime funkcije koja se izvrsava11.06.2006. u 16:36
Da se neko javi ???
11.06.2006. u 16:36 

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 322
*.fibertel.com.ar.



Profil

icon Re: ime funkcije koja se izvrsava11.06.2006. u 17:23
Lepo ti je rečeno da to nije podržano u standardnom C++.

Jedini kompajler koji ima __FUNCTION__ je gnu gcc. Vidi ovde:

http://www.delorie.com/gnu/docs/gcc/gcc_78.html

Ovo predstavlja nestandardnu ekstenziju kkoja nije portabilna na druge kompajlere.

Da bi tako nešto moglo da se uradi C++ bi trebao da ima Reflection kao .NET framework.


Tko leti vrijedi
11.06.2006. u 17:23 

nikoladsp
nikola radovanovic
trenutno-developer
novi sad

Član broj: 5455
Poruke: 183
*.ADSL.neobee.net.



Profil

icon Re: ime funkcije koja se izvrsava14.06.2006. u 14:19
jedno (mozda malo egzoticno) resenje bi bilo da instaliras mingw32 i nakon toga da napravis dll i/ili lib u koji bi natrpao sve makroe koje ima gcc (izmedju ostalih i __FUNCTION__ i sl.) , napravis f-ju za svaki (tebi interesantan) da ti vrati recimo std::string (koji je vrednost makroa) i da pozoves iz tvog VC projekta te f-je.


ja cu praviti nesto slicno ovih dana jer mi treba loger.ako uspem i budes zainteresovan, postovacu kod ovde

poz.
nikola
ja sam panker sa diplomom kod moje mame...
14.06.2006. u 14:19 

Dragi Tata

Član broj: 1958
Poruke: 3880
*.lionbridge.com.

Sajt: www.novetehnologije.com


Profil

icon Re: ime funkcije koja se izvrsava14.06.2006. u 15:13
Ma ima i VC++ __FUNCTION__ makro: http://msdn2.microsoft.com/en-us/library/b0084kay.aspx

14.06.2006. u 15:13 

NastyBoy
Bojan Nastic
UK

Član broj: 12041
Poruke: 870
*.plus.com.

Sajt: www.frd.co.uk


Profil

icon Re: ime funkcije koja se izvrsava14.06.2006. u 22:12
Pa ako compiler-specific kod ne zadovoljava -> do-it-yourself.

Vidjao sam i skupe komercijalne biblioteke koje problem reshavaju (relativno) jednostavnim makroima tipa:

void MyClass::SomeFn()
{
ENTER_METHOD(MyClass, SomeFn);
//...
END_METHOD;
}

gde makro mozhe biti komplikovan koliko ti je potrebno, od prostog:

#define ENTER_METHOD(classname, methodname)\
printf("Exec: %s :: %s", #classname, #methodname)

pa do koda (u pomenutim bibliotekama) koji pomocu makroa konstruishe call-trace (recimo makro ENTER_METHOD bi dodao jedan sub-node u stablu za call-trace, END_METHOD bi vratio za jedan nivo vishe itd. do proizvoljne dubine). Relativno je jednostavno napraviti puni call-trace ovakvim metodama.

Naravno, sve ovo funkcionishe u scope-u funkcije koja se trenutno izvrshava, i pod uslovom da strogo poshtujesh konvencije poziva funkcija, ali slichna ogranichenja ima i pomenuti __FUNCTION__ .


Mada, uvek mozhesh da zasuchesh rukave i napravish propisnu reflection podrshku u svojim baznim klasama... chini mi se da VCF (http://vcf-online.org/) to ima korektno odradjeno, vredi pogledati, ako nishta drugo ono radi reference.

[Ovu poruku je menjao NastyBoy dana 15.06.2006. u 01:07 GMT+1]
"The rational prisoner exploits the weak places, creates order from chaos: instead, collectives like the FSF vindicate their jailers by building cells almost compatible with the existing ones, albeit with more features."
14.06.2006. u 22:12 

tosa

Član broj: 1811
Poruke: 1247
58.35.123.*



Profil

icon Re: ime funkcije koja se izvrsava15.06.2006. u 13:57
A može i hard-core rešenje. Napraviš stack walker, koji je naravno platform dependant, i onda kada ti treba
ime funkcije (assert failed na primer) na brzinu isprarsiraš .MAP fajl i saznaš preko adrese i ime funkcije, ili
celog call stack-a. Možda zvuči preterano, ali baš to koristim sada ;)

Soylent green: over 6 billion served!
15.06.2006. u 13:57 

cynique
Ivan Štambuk
Zagreb@Croatia

Član broj: 93690
Poruke: 155
193.198.17.*

ICQ: 106979934
Sajt: istambuk.blogspot.com


Profil

icon Re: ime funkcije koja se izvrsava16.06.2006. u 05:06
Može i lakše preko debug simbola:

http://www.codeproject.com/thr...4&exp=0&select=1444941
16.06.2006. u 05:06 

Goran Arandjelovic
Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 248
*.verat.net.

Jabber: goranche@elitesecurity.org


Profil

icon Re: ime funkcije koja se izvrsava16.06.2006. u 16:02
@Toša
Hajde neki kratak primer u vezi toga... :)
16.06.2006. u 16:02 

tosa

Član broj: 1811
Poruke: 1247
*.ubisoft.com.cn.



Profil

icon Re: ime funkcije koja se izvrsava17.06.2006. u 02:33
@cynique
Zavisi u potpunosti od platforme na kojoj radiš.

@Goran
Primer ne bi bio samo platformski zavisan, već bi se oslanjao i na odredjenu verziju kompajlera
(zato što je moguća i drugačija calling convention). Ideja je jednostavna, kada program "pukne",
imati exception handler koji će pozvati stack walker koji će ti vratiti ime/imena funkcije.
Idealno je kada platforma ima sistemske exception handlere, tada možeš da hvataš sve
vrste grešaka, kao što je deljenje nulom i slično.

Platforma na kojoj radim sada nema exception handlere ni za šta, iz sigurnosnih razloga, i ima
veoma ograničenu memoriju, tako da nisam imao mnogo izbora šta da radim...


Soylent green: over 6 billion served!
17.06.2006. u 02:33 

[es] :: C++ programiranje :: ime funkcije koja se izvrsava

[ Pregleda: 954 | Odgovora: 10 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.