I m scrivendo un semplice Makefile che assomiglia a questoDefinizione multiplo di variabili spazio dei nomi, la compilazione C++
CC=gcc
CXX=g++
DEBUG=-g
COMPILER=${CXX}
a.out: main.cpp Mail.o trie.o Spambin.o
${COMPILER} ${DEBUG} main.cpp Mail.o trie.o Re2/obj/so/libre2.so
trie.o: trie.cpp
${COMPILER} ${DEBUG} -c trie.cpp
Mail.o: Mail.cpp
${COMPILER} ${DEBUG} -c Mail.cpp
Spambin.o: Spambin.cpp
${COMPILER} ${DEBUG} -c Spambin.cpp
clean:
rm -f *.o
Ho un config.h nome del file che è richiesto in Mail.cpp
e Spambin.cpp
, quindi ho #include "config.h"
in entrambi Mail.cpp
e Spambin.cpp
. config.h
assomiglia a questo:
#ifndef __DEFINE_H__
#define __DEFINE_H__
#include<iostream>
namespace config{
int On = 1;
int Off = 0;
double S = 1.0;
}
#endif
But when I try to compile the code it gives me
Mail.o:(.data+0x8): multiple definition of `config::On'
/tmp/ccgaS6Bh.o:(.data+0x8): first defined here
Mail.o:(.data+0x10): multiple definition of `config::Off'
/tmp/ccgaS6Bh.o:(.data+0x10): first defined here
Può uno aiutarmi debug di questo?
Ho rimosso la [c] '' tag in quanto la questione non ha nulla a che fare con C. – NPE
Hai davvero due variabili ** ** chiamati on e off ? O sono quelle costanti? Se sono costanti dovresti renderli tali e il problema andrebbe via. Bene, rimarrebbe il problema di S –
Non dovresti usare nomi riservati per le tue guardie incluse. –