Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/09/2013, 15:03
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: Problemas C, funcion con punteros y nombres repetidos

Sigo sin verlo claro, en C no puedes declarar funciones dentro de las estructuras, en todo caso puedes declarar punteros a funciones y no tendras problema por los nombres repetidos.

Supongo que tienes la listaOrdenada en una cabecera y el multiset en otra y ademas la cabecera del multiset incluye la de la listaOrdenada; cada cabecera tiene sus funciones pero al incluir ambas en la misma compilacion no puedes duplicar los nombres, en cualquier caso puedes usar prefijos para las funciones que se aplican sobre la lista ordenada y otro para las que se aplican al multiset:

Código C:
Ver original
  1. //listaOrdenada.h
  2. #ifndef LISTAORDENADA
  3. #define LISTAORDENADA
  4.  
  5. typedef struct {
  6.    ...
  7. } LISTAORDENADA;
  8.  
  9. void insertar() {
  10. }
  11.  
  12. #endif

Código C:
Ver original
  1. //multiset.h
  2. #ifndef MULTISET
  3. #define MULTISET
  4.  
  5. #include "listaOrdenada.h"
  6.  
  7. typedef struct {
  8.    ...
  9. } MULTISET;
  10.  
  11. void insertar() {//error
  12. }
  13.  
  14. #endif

Al incluir las dos fuentes en la compilacion C no permite duplicar los nombres de las funciones con lo que no puedes sobrecargar las funciones tal como harias en c++. La unica solucion es usar una unica funcion para todo y usar un identificador de tipo para saber con que estructura estas trabajando (tal como te puse en el ejemplo de arriba en el otro post), y la otra opcion es usar prefijos para nombrar las funciones; en el caso de estas dos cabeceras que pongo como ejemplo los prefijos podrian ser 'lo_insertar()' y 'ms_insertar()' (es un ejemplo, puedes usar prefijos, sufijos o lo que te de la gana pero no duplicar los nombres).

Saludos
vosk