
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:
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.
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


0