C:未定义的参考作用
我有我的程序有问题:C:未定义的参考作用
我有一个main.c中,我调用函数秀() 此功能在被称为“show.c”一个单独的文件中声明它使用头文件“show.h”。当我尝试构建它时,出现错误: 对'show'的未定义引用。 show函数应该从0-10打印Array h []和从0-20打印数组d []。 当我导入show.c时,我可以毫无问题地编译它。
我无法找到我的问题:
MAIN.C:`
#include "show.h" #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int c, e, f;
int h[11], d[21];
/*
User-Eingabe der zu generierenden "Zufallszahlen"
*/
int einlesen()
{
printf("Bitte Anzahl erzeugter Zahlen eingeben: \t");
scanf("%i", &anzahl);
printf("\n");
if(anzahl < 1)
{
printf("Bitte geben Sie eine positive natuerliche Zahl ein!");
einlesen();
}
return anzahl;
}
/*
Generierung und Verteilung der Zufallszahlen in Arrays für absolute Häufigkeiten der
Zahlen von 0 bis 10 und der Differenzen von aktueller Zahl und vorangegangener
*/
void zuweisen(int anzahl)
{
for(int x = 0; x < anzahl; x++)
{
c = rand()%11;
switch(c)
{
case 0: h[0]++; break;
case 1: h[1]++; break;
case 2: h[2]++; break;
case 3: h[3]++; break;
case 4: h[4]++; break;
case 5: h[5]++; break;
case 6: h[6]++; break;
case 7: h[7]++; break;
case 8: h[8]++; break;
case 9: h[9]++; break;
case 10: h[10]++; break;
}
if(x!=0)
{
f = e-c;
switch(f)
{
case -10: d[0]++; break;
case -9: d[1]++; break;
case -8: d[2]++; break;
case -7: d[3]++; break;
case -6: d[4]++; break;
case -5: d[5]++; break;
case -4: d[6]++; break;
case -3: d[7]++; break;
case -2: d[8]++; break;
case -1: d[9]++; break;
case 0: d[10]++; break;
case 1: d[11]++; break;
case 2: d[12]++; break;
case 3: d[13]++; break;
case 4: d[14]++; break;
case 5: d[15]++; break;
case 6: d[16]++; break;
case 7: d[17]++; break;
case 8: d[18]++; break;
case 9: d[19]++; break;
case 10: d[20]++; break;
}
}
e = c;
}
}
/*
Abrufen der Erstellten Methoden und Ausführung
*/
int main()
{
srand(time(0));
zuweisen(einlesen());
printf("Verteilung der Werte von 0 bis 10 bei %i Zufallszahlen.\n\n", anzahl);
show(h, 0, 10);
printf("Verteilung der Differenzen von -10 bis 10 bei %i Zufallszahlen.\n\n", anzahl);
show(d, -10, 10);
return 0;
}
show.h:
void show(); int relativ();
int d[], anzahl, h[];
`
show.c:
#include <stdio.h> #include <stdlib.h>
#include <time.h>
#include "show.h"
int r;
double o;
/*
Berechnung der Relativen Häufigkeit
*/
int relativ(int p[], int cnt, int s)
{
o = (double) p[s]/(double) cnt;
r = o * 100;
return r;
}
/*
Funktion zur Visualisierung der Berechneten Daten
*/
void show(int h[], int von, int bis)
{
for(int x = 0; x <= (bis - von); x++)
{
printf("%i\t", x+von);
printf(" : ");
printf("%10i\t", h[x]);
printf("(%i%%)\t", relativ(h, anzahl, x));
for(int y = 0; y < relativ(h, anzahl, x); y++)
{
printf("XXX");
}
printf("\n");
}
printf("\n\n\n");
}
回答:
展定义为:
void show();
表演被称为:
show(h, 0, 10);
你可能在编译的C++和编译器/连接器找不到一个版本显示,有3个参数。
是你正在编译为C,这将被接受,因为没有一个参数指定的函数(即()
)意味着它可以接受任何数量的任何类型的参数,因此链接会发现show
(虽然也许这就是不允许在最新的标准中)。
注意:在makefile中,当然必须在要链接的对象列表中包含show.o。
以上是 C:未定义的参考作用 的全部内容, 来源链接: utcz.com/qa/261670.html