Skip site navigation (1) Skip section navigation (2)

Re: ayuda con función en C

From: Anthony <asotolongo(at)uci(dot)cu>
To: iescriva <iescriva(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: ayuda con función en C
Date: 2011-06-27 21:53:39
Message-ID: 4E08FBE3.5030005@uci.cu (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
El 27/06/2011 12:00, iescriva escribió:
> El 27/06/11 06:14, Anthony escribió:
>    
>> /otrasfunciones.c: In function âfactoâ:
>> otrasfunciones.c:18: warning: passing argument 1 of âfactoâ makes
>> pointer from integer without a cast
>>      
> Aquí te esta diciendo el compilador que estas creando un puntero desde
> un entero. Es por la linea: "result = n*facto(n-1);" ya que facto espera
> un vector y n es un entero.
>
>    
>> otrasfunciones.c:9: note: expected âFunctionCallInfoâ but argument is of
>> type âintâ/
>>      
> Te dice que facto espera un tipo "FunctionCallInfo" pero le estas
> pasando un int.(lo de la linea 18).
>
> La función espera un puntero al vector de argumentos así que al usar el
> entero como un puntero accede fuera de su zona de memoria y por eso te
> cierra el servidor.
>
> no tienes que pasarle n-1 sino un vecto de argumentos del tipo que
> espera facto(supongo que FunctionCallInfo).
>
> Así que necesitarás construir ese vector y utilizarlo en la linea 18.
> No tengo mucha experiencia en postgres usando C, yo crearía una función
> que espere un entero y calcularía el factorial en ella.
>
> int factorial(int n){
>    if(n)
>      return n*factorial(n-1);
>    else
>      return 1;
> }
>
> Datum
> facto(PG_FUNCTION_ARGS)
> {
>     int32 n = PG_GETARG_INT32(0);
>     int32 result;
>     result=factorial(n)
>     PG_RETURN_INT32(result);
> }
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
> Para cambiar tu suscripci�n:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>    


wowwww, esa solución me funciono, separando las funciones , no sabia que 
para postgresql  se podia hacer funciones así , como en la documentación 
solo hablan del uso de las macros esas con el Datum  , que bien gracias.
saludos

In response to

Responses

pgsql-es-ayuda by date

Next:From: Marcos OrtizDate: 2011-06-28 12:56:12
Subject: Re: Connection refused
Previous:From: Gilberto Castillo MartínezDate: 2011-06-27 17:08:22
Subject: Re: Connection refused

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group