TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: ALFREDOSKY en 09 de Julio de 2014, 14:04:55
-
Hola a todos, estoy aprendiendo c,c++,pic32 y las librerías gráficas de microchip. Estoy tratando de entender la lógica del funcionamiento y creo que voy lento pero seguro...dentro de esta lectura y aprendizaje me encuentro con una estructura de la librería GOL.h
typedef struct
{
WORD ID; // Unique id assigned for referencing.
void *pNxtObj; // A pointer to the next object.
GOL_OBJ_TYPE type; // Identifies the type of GOL object.
WORD state; // State of object.
SHORT left; // Left position of the Object.
SHORT top; // Top position of the Object.
SHORT right; // Right position of the Object.
SHORT bottom; // Bottom position of the Object.
GOL_SCHEME *pGolScheme; // Pointer to the scheme used.
DRAW_FUNC DrawObj; // function pointer to the object draw function
FREE_FUNC FreeObj; // function pointer to the object free function
MSG_FUNC MsgObj; // function pointer to the object message function
MSG_DEFAULT_FUNC MsgDefaultObj; // function pointer to the object default message function
} OBJ_HEADER;
y luego en una función ubicada en proccesing.c encuentro:
static void proccesing(void)
{OBJ_HEADER *pHdr;
....
....
SetState(pHdr, CB_CHECKED);
y la definición del esta ultima función la encuentro en GOL.h
#define SetState(pObj, stateBits) ((OBJ_HEADER *)pObj)->state |= (stateBits)
y la definición de CB_CHECKED la encuentro en CheckBox.h
#define CB_CHECKED 0x0004 // Checked state
la función SetState(pObj, stateBits) no lo entiendo bien...lo que puedo decir es que pObj es un puntero que apunta a la dirección de la estructura OBJ_HEADER, y state es uno de los miembros de aquella estructura; luego, me parece que hay una operación lógica(or) entre el estado anterior de 'state' y 'stateBits' y se almacena en 'state', no estoy seguro si sea asi ni como se realiza la operación :? ...en realidad todo esto seria mi PRIMERA pregunta.
La SEGUNDA pregunta esta relacionado con la programación, para EMULAR lo que se esta intentando realizar con estas declaraciones, he creado una estructura y he intentado manipular los datos de sus miembros, todo esto lo he hecho con DEV C++ y queda así:
#include <iostream>
#include <cstdlib>
using namespace std;
typedef struct
{
int pago_bruto;
int pago_pendiente;
int pago_realizado;
}
pago;
int main()
{
pago*ptr = NULL; //inicialización de puntero
((pago*)ptr)->pago_realizado = 40;//asignación de datos a miembro de estructura con punteros
cout<<"DATOS DE EMPLEADO"<<endl;
cout<<"*****************"<<endl;
cout<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
pero obtengo error 'An access violation(segmentation fault) raised in your program'...y me señala la line ((pago*)ptr)->pago_realizado = 40; aparentemente esta implementación es idéntica a ((OBJ_HEADER *)pObj)->state |= (stateBits) a excepcion que no realizo operacion logica, sino que asigno un dato al miembro de la estructura...por favor si alguien me puede ayudar a resolver y/o aclarar estos problemas se lo agradecería infinitamente y contribuiría con mi alicaído conocimiento de c :lol:
-
la enumeración GOL_OBJ_TYPE la encuentro en GOL.h
typedef enum
{
OBJ_BUTTON, // Type defined for Button Object.
OBJ_WINDOW, // Type defined for Window Object.
OBJ_CHECKBOX, // Type defined for Check Box Object.
OBJ_RADIOBUTTON, // Type defined for Radio Button Object.
OBJ_EDITBOX, // Type defined for Edit Box Object.
OBJ_LISTBOX, // Type defined for List Box Object.
OBJ_SLIDER, // Type defined for Slider and/or Scroll Bar Object.
OBJ_PROGRESSBAR, // Type defined for Progress Object.
OBJ_STATICTEXT, // Type defined for Static Text Object.
OBJ_PICTURE, // Type defined for Picture or Bitmap Object.
OBJ_GROUPBOX, // Type defined for Group Box Object.
OBJ_CUSTOM, // Type defined for Custom Object.
OBJ_ROUNDDIAL, // Type defined for Dial Object.
OBJ_METER, // Type defined for Meter Object.
OBJ_GRID, // Type defined for Grid Object.
OBJ_CHART, // Type defined for Chart Object.
OBJ_TEXTENTRY, // Type defined for Text-Entry Object.
OBJ_DIGITALMETER, // Type defined for DIGITALMETER Object.
OBJ_ANALOGCLOCK, // Type defined for ANALOGCLOCK Object.
OBJ_UNKNOWN // Type is undefined and not supported by the library.
} GOL_OBJ_TYPE;
y esta seria una TERCERA pregunta, como es que se relaciona enum con struct?