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

ime funkcije koja se izvrsava

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

[ Pregleda: 2631 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Neznalica_sa_ugla
split

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



Profil

icon ime funkcije koja se izvrsava04.06.2006. u 11:28 - pre 217 meseci
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]
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

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



+6 Profil

icon Re: ime funkcije koja se izvrsava04.06.2006. u 13:23 - pre 217 meseci
Neki kompajleri imaju definisan makro __FUNCTION__ za tu svrhu, ali to nije deo standarda.
 
Odgovor na temu

Neznalica_sa_ugla
split

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



Profil

icon Re: ime funkcije koja se izvrsava11.06.2006. u 16:36 - pre 217 meseci
Da se neko javi ???
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

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

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: ime funkcije koja se izvrsava11.06.2006. u 17:23 - pre 217 meseci
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
 
Odgovor na temu

nikoladsp
nikola radovanovic
trenutno-developer
novi sad

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



Profil

icon Re: ime funkcije koja se izvrsava14.06.2006. u 14:19 - pre 217 meseci
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...
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

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



+6 Profil

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

 
Odgovor na temu

NastyBoy
Bojan Nastic
UK

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



+4 Profil

icon Re: ime funkcije koja se izvrsava14.06.2006. u 22:12 - pre 217 meseci
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]
 
Odgovor na temu

tosa
上海, 中国

Član broj: 1811
Poruke: 1342
58.35.123.*

ICQ: 14293955
Sajt: https://github.com/milost..


+48 Profil

icon Re: ime funkcije koja se izvrsava15.06.2006. u 13:57 - pre 217 meseci
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 ;)
 
Odgovor na temu

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 - pre 217 meseci
Može i lakše preko debug simbola:

http://www.codeproject.com/thr...4&exp=0&select=1444941
 
Odgovor na temu

Goran Arandjelovic
Beograd

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



+9 Profil

icon Re: ime funkcije koja se izvrsava16.06.2006. u 16:02 - pre 217 meseci
@Toša
Hajde neki kratak primer u vezi toga... :)
 
Odgovor na temu

tosa
上海, 中国

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

ICQ: 14293955
Sajt: https://github.com/milost..


+48 Profil

icon Re: ime funkcije koja se izvrsava17.06.2006. u 02:33 - pre 217 meseci
@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...

 
Odgovor na temu

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

[ Pregleda: 2631 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

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