🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: es.comp.os.linux.programacion
9 messages
9 total messages Started by Pere Pujal i Carabantes Fri, 21 Dec 2007 21:56
Nombre de una funcion
#497
Author: Pere Pujal i Carabantes
Date: Fri, 21 Dec 2007 21:56
20 lines
1579 bytes
Holas!

Cuando se llama a un script bash, $0 nos da el nombre del script.

Existe algo similar para una funcion en C que nos de el nombre 
de la funcion?

En caso negativo, conoceis de alguna manera alternativa para 
que una funcion averigue su nombre?

No me vale el meterlo "hardcoded" dentro de ella :)


Salut
Pere
-- 
sc@fornol.no-ip.org    spc@fornol.no-ip.org
cs@fornol.no-ip.org    cannsp@fornol.no-ip.org
spamc@fornol.no-ip.org spmc@fornol.no-ip.org
cspam@fornol.no-ip.org cspm@fornol.no-ip.org
Re: Nombre de una funcion
#498
Author: Pedro Maicas
Date: Fri, 21 Dec 2007 22:21
30 lines
1985 bytes
On Fri, 21 Dec 2007 21:56:07 +0000 (UTC), Pere Pujal i Carabantes
<pere@fornol.no-ip.org> wrote:

>Cuando se llama a un script bash, $0 nos da el nombre del script.
>
>Existe algo similar para una funcion en C que nos de el nombre 
>de la funcion?
>
>En caso negativo, conoceis de alguna manera alternativa para 
>que una funcion averigue su nombre?
>
>No me vale el meterlo "hardcoded" dentro de ella :)


No, no existe nada as�, y adem�s no tiene sentido.

A veces uno est� acostumbrado a un lenguaje donde se hacen las
cosas de determinada manera, y cuando cambia de lenguaje
tiede a 'necesitar' cosas que otros programadores en miles
de horas dedicadas a este lenguaje no han necesitado nunca.

En C por ejemplo puedes usar punteros a funciones, que seguramente
es lo que necesitas (como no dices cual es exactamente el problema
tampoco se puede asegurar).

Saludos :-)           -Pedro-

  http://www.maicas.net/ 

  e-mail en www.maicas.net
Re: Nombre de una funcion
#499
Author: Pere Pujal i Carabantes
Date: Fri, 21 Dec 2007 23:02
61 lines
3197 bytes
Hola Pedro!

El 2007-12-21
Pedro Maicas va escriure en 
es.comp.os.linux.programacion:
 
> On Fri, 21 Dec 2007 21:56:07 +0000 (UTC), Pere Pujal i Carabantes
> <pere@fornol.no-ip.org> wrote:

> >Cuando se llama a un script bash, $0 nos da el nombre del script.
> >
> >Existe algo similar para una funcion en C que nos de el nombre 
> >de la funcion?
> >
> >En caso negativo, conoceis de alguna manera alternativa para 
> >que una funcion averigue su nombre?
> >
> >No me vale el meterlo "hardcoded" dentro de ella :)


> No, no existe nada as�, y adem�s no tiene sentido.

> A veces uno est� acostumbrado a un lenguaje donde se hacen las
> cosas de determinada manera, y cuando cambia de lenguaje
> tiede a 'necesitar' cosas que otros programadores en miles
> de horas dedicadas a este lenguaje no han necesitado nunca.

> En C por ejemplo puedes usar punteros a funciones, que seguramente
> es lo que necesitas (como no dices cual es exactamente el problema
> tampoco se puede asegurar).

La idea es seguir el hilo de ejecuci�n de un programa gr�fico con 
la idea final de crear un grabador de macros.
El caso es que el programa ya est� creado sin esa idea y es bastante 
lioso irlo modificando funci�n por funci�n.

Pensaba en una o dos lineas en C que inyectaria al inicio de cada 
funci�n con algun script en sed y que dieran el nombre de la funci�n,
sus par�metros, etc.

Luego ya me apa�ar�a para convertir la salida del programa en c�digo
que pudiera interpretar ese mismo programa.


Bueno..., creo que ya he encontrado algo

http://gcc.gnu.org/onlinedocs/gcc/Function-Names.html

Ahora a ver si lo consigo...


> Saludos :-)           -Pedro-


Salut
Pere
-- 
sc@fornol.no-ip.org    spc@fornol.no-ip.org
cs@fornol.no-ip.org    cannsp@fornol.no-ip.org
spamc@fornol.no-ip.org spmc@fornol.no-ip.org
cspam@fornol.no-ip.org cspm@fornol.no-ip.org
Re: Nombre de una funcion
#500
Author: Iván Sánchez Ortega
Date: Sat, 22 Dec 2007 01:02
19 lines
1488 bytes
Pere Pujal i Carabantes wrote:

> Cuando se llama a un script bash, $0 nos da el nombre del script.
> 
> Existe algo similar para una funcion en C que nos de el nombre
> de la funcion?

Te acabas de ganar un STFW & RTFM:

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

;-)

-- 
----------------------------------
Iv�n S�nchez Ortega -ivansanchez-algarroba-escomposlinux-punto-org-

MSN:i_eat_s_p_a_m_for_breakfast@hotmail.com
Jabber:ivansanchez@jabber.org ; ivansanchez@kdetalk.net
Re: Nombre de una funcion
#501
Author: |||RIP|||
Date: Sat, 22 Dec 2007 09:42
21 lines
1406 bytes
Pere Pujal i Carabantes escribi�:

> Holas!
> 
> Cuando se llama a un script bash, $0 nos da el nombre del script.
> 
> Existe algo similar para una funcion en C que nos de el nombre 
> de la funcion?
> 

int main (int argc, char *argv[]) {
.
.
.
}

argc nos da el numero de parametros. Ej: "./programa arg1 arg2",  nos 
daria 3
argv[] nos da el nombre de esos parametros. Ej: argv[0] daria "programa"

Espero que no me haya confundido, suerte!
Re: Nombre de una funcion
#502
Author: Pedro Maicas
Date: Sat, 22 Dec 2007 10:05
43 lines
2211 bytes
On Fri, 21 Dec 2007 23:02:10 +0000 (UTC), Pere Pujal i Carabantes
<pere@fornol.no-ip.org> wrote:

>Bueno..., creo que ya he encontrado algo
>
>http://gcc.gnu.org/onlinedocs/gcc/Function-Names.html
>
>Ahora a ver si lo consigo...
>

Pues entonces creo que s� que te sirve eso, que no es
una funcion del c sino una macro del preprocesador,
es decir que es lo mismo que estribir a manubrio el
nombre de la funcion. Te puede servir para hacer 
estad�sticas pero no para invocar la funcion. 

Por otro lado si solo sabes cuando se entra en 
una funcion, y no sabes cuando se sale ....

Quizas se podr�a hacer algo m�s elaborado sustituyendo
los nombres de funcion.  Por ejemplo tienes:

void funcion1() {....}

Y lo cambias por _funcion1() {....}

Y creas una nueva funcion:

void function1()
{
  entrada("funcion1");
  _funcion1();
  salida("funcion1");
}

Esta segunda parte igusl se puede simplicar con una macro,
para no tener que teclear tanto. 

Saludos :-)           -Pedro-

  http://www.maicas.net/ 

  e-mail en www.maicas.net
Re: Nombre de una funcion
#503
Author: Luis Colorado
Date: Mon, 24 Dec 2007 00:23
37 lines
2502 bytes
"Pere Pujal i Carabantes" <pere@fornol.no-ip.org> escribió en el mensaje news:slrnfmodjn.v4d.pere@hola.fou.net...
> Holas!
> 
> Cuando se llama a un script bash, $0 nos da el nombre del script.
> 
> Existe algo similar para una funcion en C que nos de el nombre 
> de la funcion?

Existe algo similar a lo que describes sobre un shell script.  Si tienes definida la función main() como:

int main(int argc, char **argv) {...}

entonces argv[0] será el nombre del programa (pero no de la función, ojo) que se está ejecutando.

por otro lado, en gcc existía una macro (que quedó obsoleta, creo) llamada __FUNCTION__ que se
expandía con el nombre de la función, pero como digo ya no se puede usar.

> 
> En caso negativo, conoceis de alguna manera alternativa para 
> que una funcion averigue su nombre?
> 
> No me vale el meterlo "hardcoded" dentro de ella :)
> 
> 
> Salut
> Pere
> -- 
> sc@fornol.no-ip.org    spc@fornol.no-ip.org
> cs@fornol.no-ip.org    cannsp@fornol.no-ip.org
> spamc@fornol.no-ip.org spmc@fornol.no-ip.org
> cspam@fornol.no-ip.org cspm@fornol.no-ip.org
Re: Nombre de una funcion
#504
Author: Luis Colorado
Date: Mon, 24 Dec 2007 00:26
39 lines
2177 bytes
"Iván Sánchez Ortega" <ivansanchez-alg@rroba-escomposlinux.-.punto.-.org> escribió en el mensaje news:fkhnn2$dls$1@hercules.cohp1...
> Pere Pujal i Carabantes wrote:
> 
>> Cuando se llama a un script bash, $0 nos da el nombre del script.
>> 
>> Existe algo similar para una funcion en C que nos de el nombre
>> de la funcion?
> 
> Te acabas de ganar un STFW & RTFM:
> 
> http://www.delorie.com/gnu/docs/gcc/gcc_78.html

Creo que la macro __FUNCTION__ está `deprecated' si no `obsolete' y ya no se puede usar.

en cualquier caso, podría hacer un

int f1(void)
#define FUNCTION_NAME f1
{
...
}

de forma que pueda utilizarlo de forma independiente de la arquitectura (o compilador) en el código.

> 
> ;-)
> 
> -- 
> ----------------------------------
> Iván Sánchez Ortega -ivansanchez-algarroba-escomposlinux-punto-org-
> 
> MSN:i_eat_s_p_a_m_for_breakfast@hotmail.com
> Jabber:ivansanchez@jabber.org ; ivansanchez@kdetalk.net
Re: Nombre de una funcion
#505
Author: Luis Angel Fdez. Fdez.
Date: Mon, 24 Dec 2007 08:08
36 lines
2510 bytes
	A las 00:26 del Monday 24 de December, 
	Luis Colorado <luis.colorado@hispalinux.es> 
	hablando de Re: Nombre de una funcion 
	en es.comp.os.linux.programacion dijo...

>
> "Iv�n S�nchez Ortega" <ivansanchez-alg@rroba-escomposlinux.-.punto.-.org> escribi� en el mensaje news:fkhnn2$dls$1@hercules.cohp1...
>> Pere Pujal i Carabantes wrote:
>> 
>>> Cuando se llama a un script bash, $0 nos da el nombre del script.
>>> 
>>> Existe algo similar para una funcion en C que nos de el nombre
>>> de la funcion?
>> 
>> Te acabas de ganar un STFW & RTFM:
>> 
>> http://www.delorie.com/gnu/docs/gcc/gcc_78.html
>
> Creo que la macro __FUNCTION__ est� `deprecated' si no
> `obsolete' y ya no se puede usar.

  Seg�n parece, en ello est�n.

  De todas formas, puede (debe) utilizarse, en caso de que el
  compilador ya lo soporte: __func__

  Seg�n he leido, y si no lo entend� mal, __func__ *no* es una
  macro.

  Ta llueu.

-- 
Ubuntu 7.10 (gutsy) (kernel 2.6.22-14-386 i686) GNOME 2.20.1
Intel(R) Pentium(R) M processor (600.000 MHz) up 23:26, 2 users
HT: Zanzaborn�n (1457021) X.1762  # http://muxin.no-ip.org/
SK: C.D. Arrancatapinos (18088) IV.57   # Jabber: laffdez@gmail.com
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads