webForumDet fria alternativet

Portabel kod, definitioner

C/C++

3 svar · 207 visningar · startad av fluff

Medlem sedan juli 200268 inlägg
Frågan#1

Tjena

Håller på med ett litet program (mest för att lära mig) och har kommit på att man kan skriva väldigt trevlig o portabel kod genom att t.ex använda

#ifdef _WIN32
#include <windows.h>
#endif

t.ex, vad finns det för andra definitioner?
om man kompilerar med gcc på linux, sätts _LINUX då?
hur är det med *bsd?

Tacksam för svar, har missbrukat google för mycket, förhoppningsvis inte på fel sätt :r

Medlem sedan juli 200268 inlägg
#2

*bumpelibump bump* :stud

Medlem sedan juli 200173 inlägg
#3

Portabel kod, ja den önskan har väl funnits i alla tider men har sällan lyckats till fullo. Problemen är alla API, gränssnitt, bibliotek m m. Sedan kan man lägga till att en standard ofta tolkas olika och/eller ofullständigt. T ex är ju många missnöjda med VC++ 6.0 i en del avseenden, ska tydligen bli bättre i nästa .net.

Problemet med #ifdef blir att koden lätt blir lite grisig. Vi har en stor applikation där det finns massa ifdefs beroende på om det är en svensk eller norsk version, detta beror på olika ritstandard i Sverige och Norge. Men alternativet med uppdelad kod är sämre för det blir omöjligt att underhålla i långa loppet.

Medlem sedan juli 200268 inlägg
#4

Okaj, mitt program (som du säkert redan gissat) består inte direkt av flera miljoner rader kod, utan kanske bara några hundra.

Vad jag egentligen vill veta är alltså om "gcc" definerar t.ex "_LINUX" när man kompilerar, såsom Visual Studio definerar "_WIN32".

Tydligen kan man göra det med makefiles, men jag tycker det borde finnas ett annat sätt......... :q

255 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)