Soy nuevo en c, y algunos me han dado algún código fuente que alguien más ha escrito y compilado en Windows.compilando en Windows y Linux
Después de tratar de hacer en compilación en Linux tengo errores porque Linux no es compatible con DWORD, Word y UINT32. Tengo 6 archivos, por ejemplo. A.h, A.c, B.h, B.c, C.h, C.c. Estas palabras clave están en todos los archivos.
Así que estoy pensando en 2 posibles soluciones. Que es mejor #define o 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
Para la segunda parte me pregunto dónde debería poner estas declaraciones. ¿Deberían ir en los archivos de encabezado, o deberían ir en los archivos de origen?
Por ejemplo, ¿debería hacer algo como esto en los archivos de encabezado o en los archivos fuente?
#ifdef WIN32
/* windows stuff */
#else
typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef unsigned int UNINT32;
#endif
Muchas gracias por las sugerencias anteriores,
Muéstremelo ... eso es lo que obtengo para tipado lento –
Si va a mantener la compilabilidad multiplataforma, puede ponerlo en un archivo llamado windows.h que guarde en una ubicación estándar, ya que ese es el archivo en Windows que te da esas declaraciones. –
si la máquina tiene long = 8 (máquinas de 64 bits), use typedef unsigned int DWORD. – Antarus