Ni hablar que he estado en varios post de la inet, los cuales aconsejan casi lo mismo que en el post anterior, pero no me está funcionando.
Para hacerlo sencillo, expongo lo que tengo:
Tengo 3 archivos: f1.cpp. f2.cpp y f2.h.
Ambos CCPs hacen un include de f2.h:
f1.cpp
Código
#include "f2.h" int main(){ aNumber = 1; globalNumber = aNumber + aUnsignedNumber; return globalNumber; }
f2.cpp
Código
#include "f2.h" void nada(){ aUnsignedNumber = 2; }
f2.h:
Código
#pragma once int aNumber; //variable usada en f1.cpp unsigned int aUnsignedNumber; //variable usada en f2.cpp int globalNumber; //Variable global usada en ambos CPPs
Estoy en Visual Studio 2013 y al compilar sale:
1>------ Build started: Project: Hola, Configuration: Debug Win32 ------
1> f1.cpp
1> Note: including file: e:\proyectos\visualstudio\projects\hola\hola\f2.h
1>f2.obj : error LNK2005: "int aNumber" (?aNumber@@3HA) already defined in f1.obj
1>f2.obj : error LNK2005: "unsigned int aUnsignedNumber" (?aUnsignedNumber@@3IA) already defined in f1.obj
1>f2.obj : error LNK2005: "int globalNumber" (?globalNumber@@3HA) already defined in f1.obj
1>E:\Proyectos\VisualStudio\Projects\Hola\Debug\Hola.exe : fatal error LNK1169: one or more multiply defined symbols found
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
He probado colocar #pragma once en cada .cpp y no funciona. También probé usando #ifndef en f2.h (y en ambos .cpp también) y no funciona.
Cualquier ayuda es bienvenida.
PD: En realidad, la estructura que tengo es mas compleja, pero creo que lo anterior es la base del problema. Los CPPs son más y usan tipos de windows.h y demás headers, los cuales incluyo en el .h.