C sharp - error en #define usando el simbolo #

 
Vista:
sin imagen de perfil

error en #define usando el simbolo #

Publicado por Diego (5 intervenciones) el 31/10/2015 03:18:48
Buenas noches, tengo un problema a la hora de compilar el programa que escribí para probar el uso de dos macros que aparecieron en un enunciado.

Indique qué es lo que hacen las siguientes macros:

#define macro1(exp) printf(#expr "= %g\n", expr);
#define macro2(uno, dos) uno ## dos


Luego de leerlo pensé: la macro1 hace un convierte el parametro a un string y luego muestra el número en formato %g
la macro2 une los dos parametros en uno solo(pero no es una concatenacion de cadenas).

escribí lo siguiente para probar las macros:

1
2
3
4
5
6
7
8
9
10
#define macro1(exp) printf(#expr "= %g\n", expr)
#define macro2(uno, dos) uno ## dos
#include <stdio.h>
int main(){
	float a = 12.5;
	char bc[] = {"Hola mundo"};
	macro1(a);
	printf("\n%s\n", macro2(b, c));
	return 0;
}

Para comodidad mia le quité el ; de la macro1 y lo coloco manualmente a la hora de invocar..

Al momento de compilar el programa desde consola en linux debian me arroja lo siguiente:

gcc -o ejer15.exe -Wall ejer15.c
ejer15.c:1:19: error: '#' is not followed by a macro parameter
ejer15.c: In function ‘main’:
ejer15.c:7:2: warning: implicit declaration of function ‘macro1’ [-Wimplicit-function-declaration]

No entiendo bien el porqué de ese error y les agradecería que me ayudaran a entenderlo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

error en #define usando el simbolo #

Publicado por Requeteprogramador (115 intervenciones) el 01/11/2015 08:45:55
Sí, es incompresible. A mí me pasa lo mismo cuando en una variable quiero usar el símbolo *.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

error en #define usando el simbolo #

Publicado por Diego (5 intervenciones) el 01/11/2015 12:46:22
Lo del simbolo o caracter especial, de ser valido debe de serlo luego del primer caracter de la variable; osea, no se pueden usar caracteres especiales al principio del nombre de una variable,(AUnque puede que me esté confundiendo de lenguaje).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error en #define usando el simbolo #

Publicado por Requeteprogramador (115 intervenciones) el 01/11/2015 13:30:47
Un poco sí te estás confundiendo de lenguaje, pues este foro es de c# y de lo que preguntas es c.

Si lo que quieres probar son las concatenaciones y lo de coger el nombre de un parámetro tienes que llamar las cosas de la misma manera siempre, que si no el compilador no sabe de qué hablas y se lía. O sea

1
2
3
4
5
6
7
8
9
10
11
#define macro1(expr) printf(#expr "= %g\n", expr)
#define macro2(uno, dos) uno ## dos
 
 
int main(){
	float a = 12.5;
	char ba[] = {"Hola mundo"};
	macro1(a);
	printf("\n%s\n", macro2(b,a));
	return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar