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

回到顶部