การเชื่อมต่อกับโครงสร้างและสหภาพที่ไม่ระบุชื่อกับ c2hs


100

เราจะไปเกี่ยวกับการเข้ารหัสโค้ด C ชิ้นนี้ในไฟล์. chs ได้อย่างไรเพื่อให้ c2hs สามารถแปลงเป็นสิ่งที่ค่อนข้างดีได้?

typedef enum {
    MONOME_BUTTON_UP        = 0x00,
    MONOME_BUTTON_DOWN      = 0x01,
    MONOME_ENCODER_DELTA    = 0x02,
    MONOME_ENCODER_KEY_UP   = 0x03,
    MONOME_ENCODER_KEY_DOWN = 0x04,
    MONOME_TILT             = 0x05,

    /* update this if you add event types */
    MONOME_EVENT_MAX        = 0x06
} monome_event_type_t;

typedef struct monome monome_t; /* opaque data type */
typedef struct monome_event monome_event_t;

typedef void (*monome_event_callback_t)
    (const monome_event_t *event, void *data);

struct monome_event {
    monome_t *monome;
    monome_event_type_t event_type;

    /* __extension__ for anonymous unions in gcc */
    __extension__ union {
        struct {
            unsigned int x;
            unsigned int y;
        } grid;

        struct {
            unsigned int number;
            int delta;
        } encoder;

        struct {
            unsigned int sensor;
            int x;
            int y;
            int z;
        } tilt;
    };
};

12
เป็นผลดีกว่าสำหรับคุณที่จะพยายามแก้ปัญหาก่อนจากนั้นจึงมีคำถามเฉพาะเกี่ยวกับภาษาและ / หรือเครื่องมือ คำถามที่ทำให้เกิดความสับสนและหลีกเลี่ยงความซับซ้อนที่ไม่จำเป็นของแอปพลิเคชันเฉพาะจะดีกว่า ตัวอย่างเช่นคุณสามารถถามเกี่ยวกับโครงสร้างง่ายๆและ / หรือเกี่ยวกับการรวมกันอย่างง่ายจากนั้นนำความรู้นั้นไปใช้กับปัญหาของคุณ
Thomas M. DuBuisson

2
@ ThomasM.DuBuisson ฉันคิดว่าคุณมีเหตุผล ฉันจะดำเนินการต่อไปอีกเล็กน้อย

@unsymbol คุณมีคำตอบสำหรับคำถามของคุณหรือไม่? โปรดพิจารณาเพิ่มที่นี่ :)
alfakini

1
สวัสดีคุณไม่มีสัญลักษณ์มีข่าวเกี่ยวกับเรื่องนี้หรือไม่? คุณใช้งานได้หรือไม่และอย่างไร
Casper Thule Hansen

คำตอบ:


1

เกี่ยวกับสิ่งนี้: เปลี่ยนรหัสเพื่อให้คุณตั้งชื่อสมาชิก เค้าโครงในหน่วยความจำจะเหมือนกันเพื่อให้เข้ากันได้กับไบนารี คุณจะต้องทำแพตช์นี้สำหรับ lib แต่ละเวอร์ชัน

struct monome_event {
    monome_t *monome;
    monome_event_type_t event_type;

    /* __extension__ for anonymous unions in gcc */
    __extension__ union {
        struct me_grid {
            unsigned int x;
            unsigned int y;
        } grid;

        struct me_encoder {
            unsigned int number;
            int delta;
        } encoder;

        struct me_tilt {
            unsigned int sensor;
            int x;
            int y;
            int z;
        } tilt;
    };
};
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.