万马奔腾247 2022-11-26 21:53 采纳率: 100%
浏览 9
已结题

运行结果告诉我有重定义,不知道怎么改正

运行程序,提示我在头文件commono.h定义的结构体SqList没有定义,接着出现一堆不知道怎么描述的bug
#ifndef _COMMON_H_
#define    _COMMON_H_
typedef struct
{
    int* elem;
    int length;
}SqList;
#endif

#ifndef _P1_H_
#define _P1_H_
int InitList(SqList& L);
int GetElem(SqList& L, int i, int& e);
int LocateElem(SqList L, int e);
int ListInsert(SqList& L, int i, int e);//插入赋值,避免数据覆盖丢失;
int ListDelete(SqList& L, int i);

#include<iostream>
#include"P1.h"
#include"common.h"
#define MAXSIZE 100
#define OK 1

int InitList(SqList& L)
{
    L.elem = new int[MAXSIZE];
    if (!L.elem)
    {
        exit(999);
    }
    L.length = 0;
    return OK;
}
int GetElem(SqList& L, int i, int& e)
{
    if (i<1 || i>L.length)
    {
        return 999;
    }
    e = L.elem[i - 1];
    return e;
}
int LocateElem(SqList L, int e)
{
    int i;
    for (i = 0; i < L.length; i++)
    {
        if (L.elem[i] == e)
        {
            return i + 1;
        }
    }
    return 999;
}
int ListInsert(SqList& L, int i, int e)//插入赋值,避免数据覆盖丢失
{
    int j;
    if (i<1 || i>L.length + 1)
    {
        return 999;
    }
    if (L.length == MAXSIZE)
    {
        return 998;
    }
    for (j = L.length - 1; j > i - 1; i++)
    {
        L.elem[j + 1] = L.elem[j];
        L.elem[i - 1] = e;
    }
    L.length++;
    return 1;
}
int ListDelete(SqList& L, int i)
{
    int j;
    if (i<1 || i>L.length)
    {
        return 999;
    }
    for (j = i; j <= L.length - 1; j++)//不仅仅要覆盖第i个,而且要把最后一位抹零
    {
        L.elem[j - 1] = L.elem[j];
    }
    return 1;
}
#endif



1>D:\VS成果项目\顺序表\P1.h(3,14): error C2065: “SqList”: 未声明的标识符

1>D:\VS成果项目\顺序表\P1.h(3,22): error C2065: “L”: 未声明的标识符
1>D:\VS成果项目\顺序表\P1.h(4,13): error C2065: “SqList”: 未声明的标识符
1>D:\VS成果项目\顺序表\P1.h(4,21): error C2065: “L”: 未声明的标识符
1>D:\VS成果项目\顺序表\P1.h(4,24): error C2062: 意外的类型“int”
1>D:\VS成果项目\顺序表\P1.h(5,16): error C2065: “SqList”: 未声明的标识符
1>D:\VS成果项目\顺序表\P1.h(5,23): error C2146: 语法错误: 缺少“)”(在标识符“L”的前面)
1>D:\VS成果项目\顺序表\P1.h(6,16): error C2065: “SqList”: 未声明的标识符
1>D:\VS成果项目\顺序表\P1.h(6,24): error C2065: “L”: 未声明的标识符
1>D:\VS成果项目\顺序表\P1.h(6,27): error C2062: 意外的类型“int”
1>D:\VS成果项目\顺序表\P1.h(7,16): error C2065: “SqList”: 未声明的标识符
1>D:\VS成果项目\顺序表\P1.h(7,24): error C2065: “L”: 未声明的标识符
1>D:\VS成果项目\顺序表\P1.h(7,27): error C2062: 意外的类型“int”
1>D:\VS成果项目\顺序表\main.cpp(7,13): warning C4326: “main”的返回类型应为“int”而非“void”
1>D:\VS成果项目\顺序表\main.cpp(10,6): error C2064: 项不会计算为接受 1 个参数的函数
1>p1.cpp
1>D:\VS成果项目\顺序表\P1.h(3,14): error C2065: “SqList”: 未声明的标识符
1>D:\VS成果项目\顺序表\P1.h(3,22): error C2065: “L”: 未声明的标识符
1>D:\VS成果项目\顺序表\P1.h(4,13): error C2065: “SqList”: 未声明的标识符
1>D:\VS成果项目\顺序表\P1.h(4,21): error C2065: “L”: 未声明的标识符
1>D:\VS成果项目\顺序表\P1.h(4,24): error C2062: 意外的类型“int”
1>D:\VS成果项目\顺序表\P1.h(5,16): error C2065: “SqList”: 未声明的标识符
1>D:\VS成果项目\顺序表\P1.h(5,23): error C2146: 语法错误: 缺少“)”(在标识符“L”的前面)
1>D:\VS成果项目\顺序表\P1.h(6,16): error C2065: “SqList”: 未声明的标识符
1>D:\VS成果项目\顺序表\P1.h(6,24): error C2065: “L”: 未声明的标识符
1>D:\VS成果项目\顺序表\P1.h(6,27): error C2062: 意外的类型“int”
1>D:\VS成果项目\顺序表\P1.h(7,16): error C2065: “SqList”: 未声明的标识符
1>D:\VS成果项目\顺序表\P1.h(7,24): error C2065: “L”: 未声明的标识符
1>D:\VS成果项目\顺序表\P1.h(7,27): error C2062: 意外的类型“int”
1>D:\VS成果项目\顺序表\p1.cpp(7,5): error C2365: “InitList”: 重定义;以前的定义是“数据变量”
1>D:\VS成果项目\顺序表\P1.h(3): message : 参见“InitList”的声明
1>D:\VS成果项目\顺序表\p1.cpp(17,5): error C2365: “GetElem”: 重定义;以前的定义是“数据变量”
1>D:\VS成果项目\顺序表\P1.h(4): message : 参见“GetElem”的声明
1>D:\VS成果项目\顺序表\p1.cpp(26,5): error C2365: “LocateElem”: 重定义;以前的定义是“数据变量”
1>D:\VS成果项目\顺序表\P1.h(5): message : 参见“LocateElem”的声明
1>D:\VS成果项目\顺序表\p1.cpp(38,5): error C2365: “ListInsert”: 重定义;以前的定义是“数据变量”
1>D:\VS成果项目\顺序表\P1.h(6): message : 参见“ListInsert”的声明
1>D:\VS成果项目\顺序表\p1.cpp(57,5): error C2365: “ListDelete”: 重定义;以前的定义是“数据变量”
1>D:\VS成果项目\顺序表\P1.h(7): message : 参见“ListDelete”的声明

我尝试直接把结构体定义在p1.h中,结果程序正常,但是如果我在添加p2.h且p2.h也需要SqList结构体怎么办呢?如果再按照p1.h操作把结构体再加到p2.h会导致重定义
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月4日
    • 创建了问题 11月26日

    悬赏问题

    • ¥100 Jenkins自动化部署—悬赏100元
    • ¥15 关于#python#的问题:求帮写python代码
    • ¥20 MATLAB画图图形出现上下震荡的线条
    • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
    • ¥15 perl MISA分析p3_in脚本出错
    • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
    • ¥15 ubuntu虚拟机打包apk错误
    • ¥199 rust编程架构设计的方案 有偿
    • ¥15 回答4f系统的像差计算
    • ¥15 java如何提取出pdf里的文字?