Estoy trabajando en un proyecto escolar y recibo algunos errores extraños de Xcode. Estoy usando la función Command + R de TextMate para compilar el proyecto. La compilación parece funcionar bien, pero la conexión falla con un mensaje de error que no entiendo.ld: símbolo duplicado
salidald:
ld: Duplicar símbolo text_field (std :: basic_istream> &) en /path/final/build/final.build/Release/final.build/Objects-normal/ppc/ generics.o y /path/final/build/final.build/Release/final.build/Objects-normal/ppc/main.o collect2: ld devolvió el código de salida 1
A continuación se muestra mis io_functions de archivo. cpp Esta es la única declaración de text_field en todo el proyecto.
#include <string>
#include <iostream>
#include <iomanip>
using namespace std;
#ifndef ENDF
#define ENDF '|'
#define ENDR '\n'
/**
reads one field from a given input stream
Usage: var = text_field(in)
*/
string text_field(istream &in){
string s;
getline(in, s, ENDF);
return s;
}
long long_field(istream &in){
return atol(text_field(in).c_str());
}
int int_field(istream &in){
return atoi(text_field(in).c_str());
}
double double_field(istream &in){
return atof(text_field(in).c_str());
}
#endif
¿Qué está pasando? Por una serie de razones, no quiero publicar la fuente completa de mi proyecto.
No #ifndef evita que eso suceda? – epochwolf
Solo dentro de la unidad de compilación, aquí tiene dos unidades de compilación separadas. El ifndef le impediría incluir el archivo dos veces en main.cpp. – paxdiablo