Avatar billede nubi19 Nybegynder
22. august 2002 - 08:53 Der er 5 kommentarer og
2 løsninger

Platform uafhængighed ?

Nu hører man jo så meget om at C er uafhængigt af platformen, så jeg tænkte på i vores stor udstrækning det gælder ?
Kan noget skrevet i ANSI C++ f.eks. køre under linux/unix selvom det er kompileret i f.eks. windows ?
Avatar billede chries Nybegynder
22. august 2002 - 09:06 #1
her er mine 5 øre :-)

Du kan køre et c/c++ program compileret i windows på linux/unix. Men kun i den forstand, at compiler er lavet til det og dit program er programeret til at køre under linux/unix. Du kan ikke lave et program der unden videre kører på begge (samme eksekverbare fil), med mindre der findes noget der kan emulere windows.

Sproget i sig selv er uafhængig, men ikke API'er du anvender i sproget. (standard libs'sene skulle være de samme, men kræver en recompilering af din kode når du fører den over til en anden platform).
Avatar billede nubi19 Nybegynder
22. august 2002 - 10:00 #2
Ok, men såfremt koden er ren ANSI, og man compiler det på en linux maskine, så vil samme kode fungere ? (uden API kald eller noget)
Avatar billede chries Nybegynder
22. august 2002 - 10:10 #3
Jeg har aldrig programeret linux, men hvis du bruger ren ansi, skulle det kunne køre på både linux og windows. (efter det har været compileret til hver sin "exe fil")
Avatar billede kamikaze Nybegynder
22. august 2002 - 12:43 #4
nubi19 >> du har ret: "såfremt koden er ren ANSI, og man compiler det på en linux maskine, så vil samme kode fungere".

Men hvis du fx. har kald direkte til windows API'et kan det ikke kompilere på Linux/UNIX, og dermed ikke køre.

Visse API'er findes til flere platforme (fx. OpenGL) og din kode kan derfor kompilere og køre på alle de platforme API'et findes til (forudsat du ikke har blandet platform-specifik kode inde i koden).
Avatar billede nubi19 Nybegynder
22. august 2002 - 14:37 #5
Oki, ville bare lige høre hvordan det fungerede :)
Avatar billede Slettet bruger
22. august 2002 - 20:44 #6
Man kan (vistnok) også lave noget betinget kompilering med nogle makroer, således at den samme kildekode bliver kompileret afhængigt af platform.
Det er over mit hoved, men jeg har hørt om det.  :-)
Avatar billede krismort Nybegynder
22. august 2002 - 22:03 #7
blackadder:
betinget compiling ser nogenlunde sådan ud, hvis jeg husker rigtigt, har aldrig selv brugt det.

#ifdef WIN32
  // udfør et eller andet for windows32 platformen
#endif

#ifdef LINUX
  // udfør noget linuz specifikt
#endif

nubi19:
Så vidt jeg ved er ANSI bare en kode spandard og ikke noget som har med læsningen af programmet at gøre. Du kan derfor under ingen omstændigheder compile et program i VC++ og starte det i linux uden at køre det under en win32 emulator. Jeg ved ikke om der findes en eller anden stener compiler skrevet til linux som har en eller anden setting som gør den kan compile til et win32 program.
Skulle ikke undrer mig hvis ikke der er en eller anden nørdet programmør, der ikke gad bruge andet end linux til at udvikle win32 programmer i, hentede en eller anden opensrc compiler og tilføjede nye en "compile til windows funktion". :)

Kristian
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