tengo un archivo llamado "SimpleFunctions.h" se define de la siguiente manera:función ya definida error en C++
#ifndef SIMPLEFUNCTIONS_H
#define SIMPLEFUNCTIONS_H
namespace my_namespace {
double round(double r) { return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5); }
float round(float r) { return round((double)r); }
}
#endif // SIMPLEFUNCTIONS_H
Este archivo se incluyó previamente en un solo archivo y se trabajaba muy bien.
Ahora hoy lo he incluido en un segundo archivo y ya no funciona. En el momento del enlace, me dice que la función ya está definida en "firstfile.obj".
Sin embargo, dado que estoy usando guardias de inclusión, esperaría que las funciones se definan solo una vez, ¿me falta algo?
Estás en lo correcto. Es por eso que debes evitar implementar funciones dentro de los encabezados. –
'inline' does _not_ implica vinculación interal. http://stackoverflow.com/questions/4957582/how-can-i-prove-that-inline-functions-default-to-internal-linkage –
@Charles: mi error - He editado la respuesta – pepsi