Sida 1 av 1

C – Fördela på fler filer (nybörjarfråga)

Postat: 15 mar 2012, 20:40
av Johnny Rosenberg
Jag har nog fått totalt hjärnsläpp, men det underlättar ju inte heller att man är ständig nybörjare på detta (det blir lätt så när man gör lite då och då med väldigt långa mellanrum).

Har gjort ett superenkelt exempel som bara inte kan gå snett:

Kod: Markera allt

#include <stdio.h>

double testfunction(double a, double b){
	return a*b/(a+b);
}

int 
main (int argc, char *argv[])
{
	double x;
	x=testfunction(3.25, 7.91);
	printf("%2.8f\n",x);

	return 0;
}
Funkar fint. Får svaret 2.30353943, vilket verkar stämma med självaste verkligheten.

Men så vill jag då testa att lägga funktionen i en separat fil, inte för att det behövs utan för att lära mig, helt enkelt.

Så, vi har då Test.c:

Kod: Markera allt

#include <stdio.h>

int 
main (int argc, char *argv[])
{
	double x;
	x=testfunction(3.25, 7.91);
	printf("%2.8f\n",x);

	return 0;
}
Dessutom har vi då Testfunction.c:

Kod: Markera allt

double testfunction(double a, double b){
	return a*b/(a+b);
}
Dags att kompilera skiten (som det skulle visa sig…):

Kod: Markera allt

Experiment$ gcc -o Test Test.c Testfunction.c
Experiment$ ./Test
1075815383.00000000
Experiment$
Ett inte helt korrekt svar, som synes.
Givetvis är jag medveten om att jag är ute och cyklar rejält här, men tyvärr kan jag inte se hur jag skulle gjort istället…

Re: C – Fördela på fler filer (nybörjarfråga)

Postat: 15 mar 2012, 22:38
av Johnny Rosenberg
Okej, jag hade glömt att ta med prototypen för funktionen ifråga. La till den och då fungerade det.

Nästa steg är då att lägga prototypen i någon headerfil, men där är det också något jag ännu fått om bakfoten, så nu är väl nästa steg att försöka få även det att fungera.

Re: C – Fördela på fler filer (nybörjarfråga)

Postat: 15 mar 2012, 22:45
av Johnny Rosenberg
Märkligt vad det kan göra nytta att titta på TV… Innan satt jag här och kunde inte komma på hur jag skulle gå vidare. Så sätter jag mig i soffan och tittar på TV en dryg timme, och när jag är tillbaka här så tar det någon minut innan jag löst det…

Kanske bara var för trött i huvudet innan, antagligen.

Så vad har man lärt sig nu då?

Förutom det där med prototyperna – jag hade av någon anledning fått för mig att man bara behövde dem i C++, ingen aning om varför – så är det ju då var man placerar dem. Tydligen kan man ha dem antingen direkt i den fil där man använder funktionen ifråga, eller i en headerfil. Denna headerfil ska då ”inkluderas” (#include) i den fil där man använder funktionen, verkar det som. Har inte testat precis alla möjligheter, så jag vet inte helt säkert om det finns några undantag.