Типовое оформление - PullRequest
       1

Типовое оформление

2 голосов
/ 30 мая 2011

У меня есть

structure {
    int a;
    char b;
} st;

Есть ли способ типизировать элемент структуры st.a?Потому что в некоторых местах я хочу это как int, а в некоторых местах я хочу это как Char*

Ответы [ 2 ]

10 голосов
/ 30 мая 2011

Я предлагаю использовать union :

struct {
  union {
    int a;
    char *ptr;
  } u;
  char b;
} st;

В предположении, что sizeof(int) == sizeof(char*) имеет место, вы можете получить доступ к одному и тому же значению в памяти, используя st.u.a или st.u.ptr.

Для чего стоит рассмотреть возможность использования size_t вместо int в качестве типа поля a.Таким образом, ваш код будет по-прежнему корректным в 64-битных сборках (в которых int может быть 32-битным, а указатель - 64-битным).

1 голос
/ 30 мая 2011

То, что вы хотите, называется союзы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...