kompilowanie w systemie Windows i Linux

Jestem nowy w c, a niektórzy otrzymali kod źródłowy, który napisał ktoś inny, skompilowany w systemie Windows.

Po próbie kompilacji na Linuksie mam błędy, ponieważ Linux nie obsługuje DWORD, WORD i UINT32. Mam na przykład 6 plików. A.h, A.c, B.h, B.c, C.h, C.c. Te słowa kluczowe znajdują się we wszystkich plikach.

Myślę więc o 2 możliwych rozwiązaniach. Który jest lepszy #define lub typedef.

1)

typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef unsigned int UNINT32;

2)

#define DWORD unsigned long 
#define WORD unsigned short 
#define UINT32 unsigned int 

W drugiej części zastanawiam się, gdzie powinienem umieścić te deklaracje. Czy powinny one znajdować się w plikach nagłówkowych, czy powinny przechodzić do plików źródłowych?

Czy na przykład powinienem zrobić coś takiego w plikach nagłówkowych lub w plikach źródłowych?

#ifdef WIN32
/* windows stuff */
#else
typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef unsigned int UNINT32;
#endif

Wielkie dzięki za powyższe sugestie,

questionAnswers(4)

yourAnswerToTheQuestion