Jeżeli musisz zmodyfikować istniejący kod w celu przeniesienia go do Linuxa możesz użyć parę ifdef...endif aby wyodrębnić specyficzne dla Linuxa części, lub kod odpowiadający innym systemom. Część programów używa pewnych konwencji co do oddzielania kodu definicjami: SVR4 dla kodu pod System V, BSD dla kodu BSD i linux dla kodu pod Linuxa.
Biblioteka GNU C używana przez Linuxa pozwala ci na włączenie różnych opcji poprzez zdefiniowanie makr:
Jeżeli zdefiniujesz _BSD_SOURCE i dodatkowo zostanie zdefiniowana _FAVOR_BSD spowoduje ona, iż cechy POSIX i SVR4 zostaną przesłonięte przez BSD. Dla przykładu: jeżeli zdefiniowano _FAVOR_BSD setjmp i longjmp będą zachowywać i odtwarzać maskę sygnału, getpgrp będzie akceptował jako argument PID. Zauważ, iż nadal musisz zlinkować program z biblioteką libbsd aby otrzymać działanie podobne do BSD dla rzeczy, o których było mowa wcześniej.
Pod Linuxem gcc definiuje parę makr automatycznie, a ty możesz je używać. Oto one:
#ifdef linux
aby wyodrębnić kod pod Linuxa. Używając tych makr możesz łatwo zaadaptować
istniejący kod aby kompilował się pod Linuxem. Pamiętaj, iż Linux zawiera
więcej cech z System V, więc mając kod pod SVR4 i BSD najlepiej startować z
kodu dla System V. Alternatywnie, możesz rozpocząć z kodu dla BSD i
zlinkować program z libbsd.