elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pasar constante a una funcion de C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pasar constante a una funcion de C  (Leído 2,594 veces)
soyloqbuskas

Desconectado Desconectado

Mensajes: 219


¡El conocimiento es de todos!


Ver Perfil
Pasar constante a una funcion de C
« en: 18 Octubre 2012, 13:25 pm »

¡Buenas a todos!

Tengo un problemilla con las constantes...Tengo lo siguiente..:

Código
  1. #define longPacket 16384
  2. #define maxNumPacket 20
  3.  
  4. //declaracion de interfaces a funciones
  5. void initArrayPacket(char * arrayPacket[maxNumPacket], int  maxNumPacket, int longPacket);
  6.  
  7. // resto del codigo...
  8.  
  9. void initArrayPacket(char * arrayPacket[maxNumPacket], int  maxNumPacket, int longPacket){
  10.        for(i=0;i<maxNumPacket;i++){
  11.                arrayPacket[i]=(char *)malloc(longPacket);
  12.        }
  13. }
  14.  
Y me da estos errores al compilar...
Citar
server.c:42:61: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant
server.c: In function ‘server’:
server.c:63:2: warning: implicit declaration of function ‘initArrayPacket’ [-Wimplicit-function-declaration]
server.c: At top level:
server.c:283:61: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant

El error de la linea 42 esta en la declaracion de la interfaz de la funcion initArrayPacket();
El error de la linea 63 esta en una llamada a la funcion initArrayPacket();
Y el error de la linea 283 esta en la implementacion de la funcion...

¿Como puedo definir una constante y pasarla por parametro a una funcion?

Gracias, un saludo.


« Última modificación: 18 Octubre 2012, 14:16 pm por soyloqbuskas » En línea

"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Pasar constante a una funcion de C
« Respuesta #1 en: 18 Octubre 2012, 16:48 pm »

El problema se debe a que estas utilizando el mismo nombre para las macros y los parámetros:
Código
  1. #define longPacket 16384
  2. #define maxNumPacket 20
  3.  
  4. void initArrayPacket(char * arrayPacket[maxNumPacket], int  maxNumPacket, int longPacket);

No puedes hacer eso porque el preprocesador actúa primero y lo que recibe el compilador es:
Código
  1. void initArrayPacket(char * arrayPacket[20], int  20, int 16384);
Ahí es donde se generan los mensajes del compilador.

En cuanto a pasar esos valores no es necesario, utiliza las macros directamente. Por cierto para evitar ese tipo de errores la convención es utilizar nombres de macros con todos sus caracteres en mayúsculas.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
pasar a asm una funcion
ASM
danyballack 1 3,394 Último mensaje 12 Marzo 2010, 08:59 am
por Eternal Idol
Pasar el valor de un parámetro que viene de una estructura a una funcion. C++
Programación C/C++
tanychu 3 4,329 Último mensaje 19 Septiembre 2010, 16:29 pm
por Littlehorse
Pasar y recibir parametros de una funcion [Bash]
Scripting
d00ze13 1 17,928 Último mensaje 13 Mayo 2011, 01:00 am
por leogtz
Pasar un array por una función
PHP
dimitrix 8 4,477 Último mensaje 19 Junio 2011, 22:47 pm
por cassiani
Problema al pasar funcion como parametro a un inicializador de clase [C++][ok]
Programación C/C++
<[(x)]> 7 7,339 Último mensaje 17 Abril 2012, 05:30 am
por <[(x)]>
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines