做一个小工程报重复定义错误怎么解决啊?
连接时报这个错误
/usr/ccs/bin/ld: Duplicate symbol "shm_id" in files bank_console.o and public.o
文件public.h里定义
int shm_id;
文件public.cpp里面定义了函数用到这个变量所以public.cpp中写了#include "public.h"
然后文件bank_console.cpp中用到这个变量,在bank_console.h中包含#include "public.h"
g++ -c public.cpp没有问题,编译public.o文件
g++ -c bank_console.cpp也没有问题,编译出bank_console.o文件
可连接的时候
g++ -o bank_console bank_console.o public.o
怎么就报那么多重复定义呢?
正常我把公共函数写到public.cpp里实现,声明在public.h里面。
然后哪个文件用到它就包含这个头文件。
为什么两个文件编译后就连接不了呢?