Экспорт произвольных символов в C - PullRequest
2 голосов
/ 10 июня 2019

Допустим, у меня есть блок перевода 1:

struct SomeData {
    int var1;
    int var2;
    int var3;
} some_data;

union Union1 {
    unsigned char buf[1024];
    struct {
        unsigned char _pad0[8];
        int some_int;
    };
} union1;

А в другом переводной блок 2:

extern int some_int;
extern int some_data_var2;

Я хотел бы сделать так, чтобы символ some_int в блоке перевода 2 разделял ту же память, что и union1.some_int в блоке перевода 1. И аналогично, я хотел бы, чтобы some_data_var2 в блоке перевода 2 разделял то же самое память как some_data.var2 в блоке перевода 2. Как я могу это сделать?

Это в Linux

1 Ответ

1 голос
/ 10 июня 2019

Вы намерены выставлять их непосредственно как необработанные int s?

Потому что, если это не так, вы можете просто добавить

int& some_int() { return union1.some_int; }
int& some_data_var2() { return some_data.var2; }

к первой единице перевода изатем объявите эти функции в заголовке (или, если необходимо, непосредственно в модуле перевода 2).


Редактировать: поскольку вы удалили тег C ++ после Я написал это, простоизменить ссылки на указатели.

...