I m pisania prostych Makefile, który wygląda jak tenstwardnienie definicja przestrzeni nazw zmiennych, C++ kompilacji
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
I mieć nazwę pliku config.h, który jest wymagany w Mail.cpp
i Spambin.cpp
, więc mam #include "config.h"
w zarówno Mail.cpp
i Spambin.cpp
. config.h
wygląda następująco:
#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
Może ktoś mi pomóc debugowania to?
I usunęliśmy '[c]' tag ponieważ pytanie ma nic wspólnego z C – NPE
Czy naprawdę masz dwie zmienne ** ** nazywa się i wyłącza ? Czy są te stałe? Jeśli są to stałe, powinieneś je wykonać, a problem zniknie. Zostaniesz z problemem S –
Nie powinieneś używać zastrzeżonych nazw dla swoich strażników. –