遇难题了:程序连接时报 duplicate symbol错误
小弟我学习写了一个程序,程序连接时报错。下面是详细代码和错误信息,求帮助。main.c
程序代码:#include "store.h"
int main(){
//1.初始化数据
InIt();
//2.打印这些数据
ShowProps();
}store.c
程序代码:#include "store.h"
void InIt(){
static Prop propArray[] = {
{1,"双倍经验卡",3000,10,"双击666"},
{2,"腐烂的道袍",5000,8,"只可远观,不可亵玩"},
{3,"生锈的铁剑",8000,10,"新后专用"},
{4,"无极袍",13000,5,"刀枪不入,水火不浸"},
{5,"直升一级丹",83000,10,"吃了以后还想在吃!在吃!在吃!"},
};
propsCount = sizeof(propArray) / sizeof(Prop);
props = propArray;//设定指针的指向
static Player playerArray[] = {
{1,"超级毛毛虫","123456",.gold=50000,},
{2,"塔罗奥特曼","123456",.gold=150000,},
{3,"元始天尊之徒","123456",.gold=500000,},
{4,"星河","123456",.gold=1150000,},
};
playerCount = sizeof(playerArray) / sizeof(Player);
players = playerArray;
} //初始化数据
void ShowProps(void){
int i;
if(props == NULL) return;
printf("编号\t名称\t单价\t库存\t商品介绍\n");
for(i = 0;i < propsCount;i++){
printf("%d\t%s\t%.2lf\t%d\t%s\n",props[i].id,props[i].name,props[i].price,props[i].stock,props[i].desc);
}
}//列出商城中道具信息
//void ShowPlayer(void);//列出玩家信息store.h
程序代码:#ifndef store_h
#define store_h
#include <stdio.h>
#include <stdlib.h>
/* 商品结构体 */
typedef struct _prop{
int id;
char name[50];//名称
double price;//单价
int stock;//库存
char desc[200];//描述
}Prop;
/* 背包结构体 */
typedef struct _bag{
int playerId;//所属玩家编号
int count;//当前背包中道具的数量
int max;//当前背包格子总数
Prop props[8];//当前背包中的道具数组
}Bag;
/* 玩家结构体 */
typedef struct _player{
int id; //玩家编号
char name[50]; //玩家的昵称
char pass[50]; //玩家的密码
Bag bag; //玩家的背包
double gold; //玩家金币
double sysee; //元宝数量
}Player;
/* 设置指针,方便访问初始化后的数据 */
Prop *props;
Player *players;
/* 定义道具和玩家总数量全局变量 */
int propsCount = 0;
int playerCount = 0;
void InIt(); //初始化数据
void ShowProps(void);//列出商城中道具信息
//void ShowPlayers(void);//列出玩家信息
#endif/* store_h */错误信息:
程序代码:gcc -g main.o store.o -o main
duplicate symbol _propsCount in:
main.o
store.o
duplicate symbol _playerCount in:
main.o
store.o
ld: 2 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [main] Error 1

