| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
跟大牛学C++学算法数据结构
共有 432 人关注过本帖
标题:遇难题了:程序连接时报 duplicate symbol错误
只看楼主 加入收藏
libaoquanccc
Rank: 2
等 级:论坛游民
帖 子:24
专家分:39
注 册:2019-1-5
结帖率:66.67%
  已结贴   问题点数:16  回复次数:15   
遇难题了:程序连接时报 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
2019-01-08 09:16
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:版主
威 望:376
帖 子:13086
专家分:50623
注 册:2012-10-18
  得分:0 
程序代码:

static Player playerArray[] = {
        {1,"超级毛毛虫","123456",.gold=50000,},
        {2,"塔罗奥特曼","123456",.gold=150000,},
        {3,"元始天尊之徒","123456",.gold=500000,},
        {4,"星河","123456",.gold=1150000,},


这里面的 圆点 是神马意思

DO IT YOURSELF !
2019-01-08 09:35
libaoquanccc
Rank: 2
等 级:论坛游民
帖 子:24
专家分:39
注 册:2019-1-5
  得分:0 
回复 2楼 wp231957
我是按面向对象理解的,就是这个玩家的金钱属性
2019-01-08 09:38
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:版主
威 望:376
帖 子:13086
专家分:50623
注 册:2012-10-18
  得分:0 
vs2010显然是不支持这样的赋值方式

DO IT YOURSELF !
2019-01-08 09:40
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:291
帖 子:6156
专家分:35522
注 册:2011-1-18
  得分:0 
回复 2楼 wp231957
应该叫“指定(designator)初始化”
https://zh.cppreference.com/w/c/language/struct_initialization
2019-01-08 09:44
libaoquanccc
Rank: 2
等 级:论坛游民
帖 子:24
专家分:39
注 册:2019-1-5
  得分:0 
回复 4楼 wp231957
这么说是代码编辑器的问题?我用vim做一下看看!
2019-01-08 09:45
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:版主
威 望:376
帖 子:13086
专家分:50623
注 册:2012-10-18
  得分:0 
回复 5楼 rjsp
你能编译通过吗  反正vs2010 按c++模式 是无法通过的

DO IT YOURSELF !
2019-01-08 09:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:291
帖 子:6156
专家分:35522
注 册:2011-1-18
  得分:16 
回答提问者,你贴的信息
duplicate symbol _propsCount in:
    main.o
    store.o
说得很清楚, 定义了多个 propsCount
你在 store.h 中定义了 int propsCount = 0;
那么每 #include <store.h> 一次,都定义了一次 int propsCount = 0;
2019-01-08 09:47
libaoquanccc
Rank: 2
等 级:论坛游民
帖 子:24
专家分:39
注 册:2019-1-5
  得分:0 
回复 5楼 rjsp
看了版主给的链接里面的内容,我这样初始化结构是没有问题的啊
2019-01-08 09:47
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:291
帖 子:6156
专家分:35522
注 册:2011-1-18
  得分:0 
以下是引用wp231957在2019-1-8 09:46:53的发言:

你能编译通过吗  反正vs2010 按c++模式 是无法通过的
“指定初始化” 是 C语言 的语法,C++不支持。

2019-01-08 09:51







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054226 second(s), 8 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved