【发布时间】:2025-12-01 23:45:01
【问题描述】:
我正在尝试创建一个包含一些我经常使用的函数的库,但编译时出现此错误:
Torri_lib.cpp||multiple definition of `inizRandVett(int*, int, int, int)'|
Torri_lib.cpp||first defined here|
Torri_lib.cpp||multiple definition of `printVett(int*, int)'|
Torri_lib.cpp||first defined here|
Torri_lib.cpp||multiple definition of `scambio(int*, int*)'|
Torri_lib.cpp||first defined here|
||=== Build finished: 6 errors, 0 warnings (0 minutes, 0 seconds) ===|
这是main.cpp:
#include <iostream>
#include "Torri_lib.h"
#define N 10
using namespace std;
void ordina(int*,int);
int main()
{ int vett[N];
srand(time(NULL));
inizRandVett(vett,N,-20,20);
printf("Vettore generato:\n");
printVett(vett,N);
ordina(vett,N);
printf("\n\nVettore ordinato (neg a sx, pos a dx):\n");
printVett(vett,N);
printf("\n\n");
return 0;
}
void ordina(int*vett,int dim)
{ int i,j,neg=0,pos=0;
for(i=0;i<dim;i++)
if(vett[i]<0)
neg++;
else
pos++;
for(i=0,j=neg;i<neg;i++)
if(vett[i]>=0){
while(vett[++j]>=0);
scambio(&vett[i],&vett[j]);
}
}
这是 Torri_lib.cpp:
#include <iostream>
#include"Torri_lib.h"
void inizRandVett(int *vett, int dim, int rangeMin, int rangeMax)
{ int i;
for(i=0;i<dim;i++)
vett[i]=rand()%(rangeMax-rangeMin)+rangeMin;
}
void printVett(int *vett, int dim)
{ int i;
for(i=0;i<dim;i++)
printf("%d ",vett[i]);
}
void scambio(int*var1,int*var2)
{
int temp=*var1;
*var1=*var2;
*var2=temp;
}
这是 Torri_lib.h :
void inizRandVett(int*, int, int, int );
void printVett(int *, int);
void scambio(int*,int*);
我不明白为什么它告诉我这个错误,我没有看到函数的多个定义。 你能帮助我吗?谢谢!
【问题讨论】:
-
需要添加标题保护
-
你不应该有这个问题,因为头文件中没有定义(所以在这个简单的情况下你并不需要头文件保护)。你确定你
#include是main.cpp文件中的header文件而不是源文件吗? -
我似乎没有看到任何问题,这里也不需要包含保护和#pragma once,因为OP的示例代码中没有多重包含
标签: c++ hyperlink header include multiple-definition-error