Tôi đang viết một Makefile đơn giản mà trông như thế nàynhiều định nghĩa về biến namespace, C++ biên soạn
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
Tôi có một config.h tên tập tin được yêu cầu trong Mail.cpp
và Spambin.cpp
, vì vậy tôi có #include "config.h"
trong cả hai số Mail.cpp
và Spambin.cpp
. config.h
trông như thế này:
#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
Bất kỳ một thể giúp tôi gỡ rối này?
Tôi đã gỡ bỏ các '[c]' thẻ kể từ khi câu hỏi không có gì gì để làm với C. – NPE
Bạn có thực sự có hai biến ** ** gọi và tắt ? Hoặc là những hằng số? Nếu họ là hằng số bạn nên làm cho họ như vậy và vấn đề sẽ biến mất. Vâng, bạn sẽ được trái với vấn đề của S –
Bạn không nên sử dụng tên dành riêng cho bảo vệ bao gồm của bạn. –