Header-filer (Filnamn.h) i C
Postat: 15 apr 2012, 20:05
Håller på och leker lite med C igen och som vanligt går det inget vidare. Eller det går bra, men det känns inte som att jag hanterar det hela optimalt. Det handlar återigen om att fördela saker på flera filer. Använder enbart en vanlig textredigerare (gedit) och kör make manuellt i ett terminalfönster. Den biten fungerar utmärkt. Filerna kompileras som de ska och länkas på rätt sätt.
Vad jag funderar på är vad som är ”god programmering” eller vad man ska kalla det. Jag hittar på ett exempel:
Här är det bara en fil och allt fungerar som det ska. Inga konstigheter.
Nu delar jag upp det på flera filer. Här är main.c:
MyApp.c:
MyApp.h:
MyFunctions.c:
MyFunctions.h:
Nu skrev jag bara på här så jag har inte testat ovanstående, men det borde ju funka om jag inte klantat till det rejält här.
Som alla kan se så har jag varit tvungen att ha med raden ”#include "MyFunctions.h"” i två olika filer för att det hela ska fungera. Finns det något skäl till att inte ha med samma include-rad på fler än ett ställe? Det vill säga, är detta ”dålig programmering” på något sätt? Om så, varför och hur bör man hellre göra?
Detta exempel kanske ser lite konstigt ut, exempelvis med en .h-fil som bara refererar till en annan .h-fil, men tanken är ju att programmet ska vara lite mer omfattande än att multiplicera två tal, så detta är bara en illustration. Ville ha ett så enkelt exempel som möjligt som ändå illustrerar användandet av flera filer.
Frågan gäller alltså inte om detta är ”god programmering” vad gäller just detta exempel, utan mer generellt.
Vad jag funderar på är vad som är ”god programmering” eller vad man ska kalla det. Jag hittar på ett exempel:
Kod: Markera allt
#include <stdio.h>
double MyFunction(double, int);
int
main (int argc, char *argv[])
{
double x;
x=MyFunction(0.47,44100);
printf("%f\n",x);
return 0;
}
double MyFunction(double a, int b){
return(a*b);
}
Nu delar jag upp det på flera filer. Här är main.c:
Kod: Markera allt
#include "MyApp.h"
int
main (int argc, char *argv[])
{
MyApp();
return 0;
}
Kod: Markera allt
#include <stdio.h>
#include "MyApp.h"
void MyApp(void){
double x;
x=MyFunction(0.47,44100);
printf("%f\n",x);
}
Kod: Markera allt
#include "MyFunctions.h"
Kod: Markera allt
#include "MyFunctions.h"
double MyFunction(double a, int b){
return(a*b);
}
Kod: Markera allt
double MyFunction(double, int);
Som alla kan se så har jag varit tvungen att ha med raden ”#include "MyFunctions.h"” i två olika filer för att det hela ska fungera. Finns det något skäl till att inte ha med samma include-rad på fler än ett ställe? Det vill säga, är detta ”dålig programmering” på något sätt? Om så, varför och hur bör man hellre göra?
Detta exempel kanske ser lite konstigt ut, exempelvis med en .h-fil som bara refererar till en annan .h-fil, men tanken är ju att programmet ska vara lite mer omfattande än att multiplicera två tal, så detta är bara en illustration. Ville ha ett så enkelt exempel som möjligt som ändå illustrerar användandet av flera filer.
Frågan gäller alltså inte om detta är ”god programmering” vad gäller just detta exempel, utan mer generellt.