C/Visual C - Dos preguntas

 
Vista:

Dos preguntas

Publicado por Fede (8 intervenciones) el 19/02/2003 03:40:12
1) He hecho un programa en ANSI C, así que puede ser compilado sin problemas en Windows, ms-dos o linux. ¿Es posible hacer un ejecutable para linux en windows?

2) He visto en el código fuente de un programa, una estructura que tenía en su interior variables declaradas como:
typedef struct {
unsigned DPThreat:1, DPType:2,ASThreat:1, ASType:2, DPAge:3;
} ttable;

¿Qué significan esos dos puntos ":" y el número a continuación en cada variable?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Dos preguntas

Publicado por chuidiang (677 intervenciones) el 19/02/2003 12:30:59
Lo que necesitas para la primera pregunta es un compilador cruzado. Permite compilar en un sistema para generar código de otro sistema. No sé si existe una versión que compile en windows para linux. Tendrás que buscar.

Los :numero es el numero de bits que quieres que ocupe la variable.
unsigned DPThreat ocupa, por defecto 32 bits (depende del micro).
Si le pones :1, solo ocupa un bit, pero solo puede coger los valores 0 y 1.

Se usa cuando quieres ahorrar memoria porque sabes que los valores están limitados o cuando andas controlando puertos de hardware, en el que sabes que, por ejemplo, dos bits determinados son un dato y no quieres machacar los bits de delante o detrás.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro

Creación de ejecutables para Linux en Windows y uso de campos de bits en estructuras

Publicado por Alejandro (1042 intervenciones) el 05/05/2025 23:34:56
1) Sí, es posible crear un ejecutable para Linux en Windows utilizando herramientas de cross-compilation. Una de las herramientas más comunes para esto es MinGW (Minimalist GNU for Windows), que permite compilar programas de C y C++ para Windows. Sin embargo, para compilar específicamente para Linux desde Windows, puedes usar Cygwin o WSL (Windows Subsystem for Linux). Otra opción es utilizar un compilador cruzado como GCC configurado para Linux, que te permitirá generar un ejecutable de Linux desde un entorno de Windows. También puedes usar entornos de desarrollo como Code::Blocks o Eclipse que soportan la compilación cruzada.

2) En la estructura que mencionas, los dos puntos ":" y el número que sigue a cada variable se utilizan para definir campos de bits en C. Esto permite especificar el número de bits que se utilizarán para almacenar cada variable dentro de la estructura. En tu ejemplo:

1
2
3
4
5
6
7
typedef struct {
    unsigned DPThreat:1,
             DPType:2,
             ASThreat:1,
             ASType:2,
             DPAge:3;
} ttable;

- `DPThreat:1` significa que `DPThreat` ocupará 1 bit.
- `DPType:2` significa que `DPType` ocupará 2 bits.
- `ASThreat:1` significa que `ASThreat` ocupará 1 bit.
- `ASType:2` significa que `ASType` ocupará 2 bits.
- `DPAge:3` significa que `DPAge` ocupará 3 bits.

Esto es útil para ahorrar espacio en memoria, especialmente cuando se trabaja con estructuras que contienen muchas variables que no requieren un tamaño completo de byte. Sin embargo, el uso de campos de bits puede hacer que el código sea menos portable y más difícil de entender, así que se debe usar con precaución.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar