马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 qwe6620690 于 2019-5-10 14:35 编辑 /*c1.h*/
#include<string.h>
#include<ctype.h>
#include<malloc.h> /*malloc()等*/
#include<limits.h> /*INT_MAX等*/
#include<stdio.h> /*EOF(= ^Z或F6),NULL*/
#include<stdlib.h> /*atoi()*/
#include<io.h> /*eof()*/
#include<math.h> /*floor(),ceil(),abs()*/
#include<process.h> /*exit()*/
/* 函数结果状态代码 */
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
//#define OVERFLOW -2
typedef int Status; /*Status是函数的类型,其值是函数结果状态代码*/
typedef int Boolean; /*Boolean是布尔类型,其值是TRUE或FALSE*/
//c1-1.h
/*动态分配的顺序存储结构*/
typedef ElemType *Triplet; /*由InttTriplet分配3个元素存储空间*/
/*Triplet类型是ElemType类型的指针,存放ElemType类型的地址*/
//bo1-1.c -base operation file
#include"c1.h"
typedef int ElemType;
#include"c1-1.h"
/*基本操作的实现*/
Status InitTriplet(Triplet *T, ElemType v1, ElemType v2, ElemType v3)
{
if (!(*T = (ElemType *)malloc(3 * sizeof(ElemType))))
exit(OVERFLOW);
(*T)[0] = v1, (*T)[1] = v2, (*T)[2] = v3;
return OK;
}
//main.c -test function main file
#include"bo1-1.c"
int main(void)
{
Triplet T = NULL;
ElemType m = 0;
Status i;
i = InitTriplet(&T, 7, 8, 9);
printf("%d\n", i);
system("pause");
return 0;
}
输出结果:
1>bo1-1.c
1>main1-1.c
1>正在生成代码...
1>main1-1.obj : error LNK2005: _InitTriplet 已经在 bo1-1.obj 中定义
1>E:\source code\data structure and algorithm\source code\CH1\Debug\CH1.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
1>已完成生成项目“CH1.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
上面四个文件合一个文件正常编译,分开为什么出现重定义错误? 先谢过各位了! |