Język C. Wypisanie nazwy funkcji
Ostatnio zmodyfikowano 2017-10-11 13:15
aksen Temat założony przez niniejszego użytkownika |
Język C. Wypisanie nazwy funkcji » 2017-10-10 19:36:18 Witam Czy jest możliwe umieszczenie w funkcji w języku C linii kodu, która wypisze nazwę tej funkcji? np. int jakasFunkcja() { //u wykrycie i wypisanie nazwy funkcji "jakasFunkcja"
return 0; }
|
|
mateczek |
» 2017-10-10 19:59:50 w pliku wykonywalnym pewnikiem nawet nie ma nazw funkcji. Nazwy mogą być tylko w źródle jako ułatwienie dla programisty . Co nie zmienia faktu że funkcja może się przedstawić jakimś powitaniem hello world
|
|
jankowalski25 |
» 2017-10-10 20:39:01 Możliwe, że za pomocą preprocesora dałoby się coś takiego zrobić. A jaki jest cel? Czy te funkcje (jeśli jest ich kilka) mają robić coś jeszcze oprócz wypisywania nazwy? Przykład#include <stdio.h>
#define MY_FUNC(funkcja) void funkcja(void) \ { \ puts(#funkcja); \ }
MY_FUNC( raz ) MY_FUNC( dwa ) MY_FUNC( trzy )
int main( void ) { raz(); dwa(); trzy(); return 0; } Standardowe wyjście programu: raz dwa trzy |
|
killjoy |
» 2017-10-10 21:10:43 Coś takiego mi działało pod gcc i visualem: #include <stdio.h>
void f() { puts( __FUNCTION__ ); }
void g() { puts( __FUNCTION__ ); }
void h() { puts( __FUNCTION__ ); } int main() { f(); g(); h(); }
Standardowe wyjście: f g h
|
|
aksen Temat założony przez niniejszego użytkownika |
» 2017-10-11 00:42:47 >mają robić coś jeszcze oprócz wypisywania nazwy?
chyba nie
Robię to w celu poznania działania programu średniej wielkości (na Linuksa). Program otrzymuje polecenia przez sieć z zewnętrznego urządzenia i coś tam sobie w pewnych strukturach modyfikuje.
Jak wypisze nazwy wywoływanych funkcji na ekran będzie mi łatwiej analizować działanie programu.
Może macie jakieś dodatkowe sugestie? |
|
mateczek |
» 2017-10-11 06:19:50 pytanie zasadnicze czy masz kod źródłowy czy tylko biharkę ?? Jeśli źródła to debugger i praca krokowa i se możesz analizować program do woli !! |
|
Elaine |
» 2017-10-11 09:25:28 Standard definiuje __func__ właśnie do tego celu: void foo( void ) { puts( __func__ ); } |
|
aksen Temat założony przez niniejszego użytkownika |
» 2017-10-11 13:15:12 Przetestowałem coś takiego i ładnie wypisuje przydatne informacje: printf( "file: %s, func: %s, line: %d\n", __FILE__, __FUNCTION__, __LINE__ );
Samego debugera też spróbuję. Dzięki za pomoc. |
|
« 1 » |