Avatar billede noerbo Nybegynder
12. april 2007 - 22:40 Der er 6 kommentarer og
2 løsninger

C med henblik på OS programmering

Hej

  I forbindelse med mit studie når jeg til et kursus, hvor jeg skal lege lidt rundt i linux kernen. I kurset gives teorien, men der undervises ikke i konkret C, hvilket har forvoldt mange store problemet.
  Derfor har jeg besluttet at gribe det i opløbet og lege lidt med C
  Jeg har tidligere programmet i C++ så verdenen er ikke så fremmed for mig, så det jeg søger er ikke en bog, der kører rundt i if-statements, loops etc, men de lidt mere advancerede emner som eksempelvis håndtering af hukommelse, og hvad man ellers kan få brug for ved programmering af operativsystemer.

  Som sagt jeg får teorien i kurset så bogen er mest for at lege lidt med de praktiske redskaber jeg får brug for at kunne for at få ført det ud i livet.

  På forhånd mange tak for hjælpen.
Avatar billede arne_v Ekspert
12. april 2007 - 22:52 #1
Stort set alt C er legal C++, saa du boer aldrig have problemer med at laese C.

Compileren skal nok fortaelle dig, hvis du skriver C forkert.

Du skal vaenne dig til at bruge funktioner+structs fremfor klasser og
malloc+free fremfor new+delete.

Jeg tror faktisk ikke at det er en bog du har brug for. Jeg tror bare at du skal
have fingerne traenet lidt.

Mit forslag vil vaere et konvertere nogle programmer du har lavet i C++/Java/C# til C.
Avatar billede noerbo Nybegynder
12. april 2007 - 23:38 #2
Hvad med en ting som biblioteker? Er der her nogle jeg kan have fordel af at kende lidt til?
Avatar billede intel4004 Novice
13. april 2007 - 00:11 #3
I det tilfælde at du spørger om en bog om C så kan vil jeg uden tøven foreslå Deitel and Deitel's "C How to program". Jeg lærte C udfra denne bog. Kan kun anbefales.

http://www.deitel.com/Books/CProgramming/CHowtoProgram5e/tabid/1704/Default.aspx

Hvis du er mere vant til C++ end C, så er der chancen for at du er mere vant til referencer end egentlige pointere. Selve hukommelses-management er lidt anderledes i C da det er mere "manuelt". Du bruger funktionen malloc() til at allokere på heapen.

Malloc skal som parameter have at vide hvor mange bytes du vil allokere. Dette er ikke nødvendigt i C++ (ved brug af new), da compileren er i stand til at finde størrelsen af et objekt udfra klasse-definitionen (så vidt jeg forstår).

Eksempel:

//Et array med 20 unsigned ints på heapen:

unsigned int size = 20;
unsigned int* arr = (unsigned char*)malloc(size * sizeof(unsigned char));

if (arr != NULL)
{
  // brug allokeret område
  free(arr);
}


Mvh Intel4004
Avatar billede intel4004 Novice
13. april 2007 - 00:14 #4
Hov skulle selvfølgelig være:

unsigned int* arr = (unsigned int*)malloc(size * sizeof(unsigned int));

Intel4004
Avatar billede arne_v Ekspert
13. april 2007 - 01:15 #5
med hensyn til biblioteker, så skal man naturligvis lære ANSI C bilbliokerne

og så skal man igang med de platform specifikke

ingen af dem er specielt relevante hvis du skal lave Linux kerne kode
Avatar billede noerbo Nybegynder
13. april 2007 - 13:46 #6
Ok tak skal I have. Gider I smide et svar?
Avatar billede intel4004 Novice
13. april 2007 - 14:56 #7
ok :)
Avatar billede arne_v Ekspert
13. april 2007 - 15:32 #8
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester