<div dir="ltr">Hola a todos, no tenía nada que hacer y estaba leyendo como simular orientación a objetos en C, el siguiente código funciona y hace lo que espero que haga, pero me manda algunos avisos en la compilación que no entiendo.<div>

<br><div>¿Alguien sabrá qué pasa?</div><div><br></div><div style>compilador </div><div style><br></div><div style><br></div><div><br clear="all"><div><div>omar@euclides:~/code/c_c++$ gcc --version </div><div>gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3</div>

<div>Copyright (C) 2011 Free Software Foundation, Inc.</div><div>Esto es software libre; vea el código para las condiciones de copia.  NO hay</div><div>garantía; ni siquiera para MERCANTIBILIDAD o IDONEIDAD PARA UN PROPÓSITO EN</div>

<div>PARTICULAR</div></div><div><br></div><div><br></div><div style>El aviso al compilar es</div><div style><br></div><div style><div>omar@euclides:~/code/c_c++$ gcc objC2.c -o objC2</div><div>objC2.c: En la función ‘newObj’:</div>

<div>objC2.c:13:24: aviso: declaración implícita incompatible de la función interna ‘malloc’ [activado por defecto]</div><div>objC2.c:19:5: aviso: declaración implícita incompatible de la función interna ‘exit’ [activado por defecto]</div>

<div>objC2.c: En la función ‘set’:</div><div>objC2.c:29:5: aviso: declaración implícita incompatible de la función interna ‘exit’ [activado por defecto]</div><div>objC2.c:36:26: aviso: declaración implícita incompatible de la función interna ‘malloc’ [activado por defecto]</div>

<div>objC2.c:40:5: aviso: declaración implícita incompatible de la función interna ‘exit’ [activado por defecto]</div><div>objC2.c: En la función ‘printObj’:</div><div>objC2.c:51:5: aviso: declaración implícita incompatible de la función interna ‘exit’ [activado por defecto]</div>

<div>objC2.c: En la función ‘delete’:</div><div>objC2.c:59:3: aviso: declaración implícita incompatible de la función interna ‘free’ [activado por defecto]</div><div><br></div><div style>El código es el siguiente</div><div style>

<br></div><div style><div>#include <stdio.h></div><div>#include <string.h></div><div><br></div><div>struct _Objeto{</div><div>  int edad;</div><div>  char *nombre;</div><div>};</div><div><br></div><div>typedef struct _Objeto *Objeto;</div>

<div><br></div><div>Objeto newObj(){</div><div><br></div><div>  Objeto obj = (Objeto)malloc(sizeof(struct _Objeto));</div><div><br></div><div>  bzero(obj, sizeof(struct _Objeto));</div><div><br></div><div>  if (obj == NULL) {</div>

<div>    fprintf(stderr,"Error al crear el objeto\n");</div><div>    exit(1);</div><div>  }</div><div><br></div><div>  return obj;</div><div>  }</div><div><br></div><div>void set(Objeto obj, int Edad, const char *Nombre){</div>

<div>  </div><div>  if (obj == NULL) {</div><div>    fprintf(stderr, "Error: objeto pasado es NULL\n");</div><div>    exit(1);</div><div>  }</div><div><br></div><div>  obj->edad = Edad;</div><div><br></div><div>

  int tam = strlen(Nombre);</div><div><br></div><div>  obj->nombre = (char *) malloc((tam+1) * sizeof (char));</div><div><br></div><div>  if (obj->nombre == NULL) {</div><div>    fprintf(stderr, "No hay memoria para guardar el nombre\n");</div>

<div>    exit(1);</div><div>  }</div><div>  </div><div>  strncpy(obj->nombre, Nombre, tam);</div><div><br></div><div>  }</div><div><br></div><div>void printObj(Objeto obj){</div><div>  </div><div>  if (obj == NULL) {</div>

<div>    fprintf(stderr, "Error: objeto pasado es NULL\n");</div><div>    exit(1);</div><div>  }</div><div><br></div><div>  printf("Edad %d\nNombre %s\n", obj->edad, obj->nombre);</div><div>  }</div>

<div><br></div><div>void delete(Objeto obj){</div><div>  </div><div>  free(obj->nombre);</div><div>  obj->nombre = NULL;</div><div>  free(obj);</div><div>  obj = NULL;</div><div>  }</div><div><br></div><div>int main(int argc, const char *argv[]) {</div>

<div><br></div><div>  Objeto obj = newObj();</div><div>  set(obj, 29, "omar");</div><div>  printObj(obj);</div><div>  delete(obj);</div><div>  </div><div>  return 0;</div><div>}</div><div><br></div><div><br></div>

<div style>Saludos!!</div></div></div>-- <br><div>Omar Jonathan Mendoza Bernal</div>"Las cicatrices nos recuerdan que el pasado fue real" Dr. Lecter en Dragón Rojo 
</div></div></div>