Переопределение в C - PullRequest
1 голос
/ 12 мая 2010

Может кто-нибудь объяснить мне переопределение в C:

возможно ли сделать что-то подобное

typedef struct NumberContainer* ptrNumberContainer;

и после этого

  typedef struct NumberContainer* ptrCall;

Может ли это вызвать проблемы во время связывания? заранее спасибо

Ответы [ 4 ]

5 голосов
/ 12 мая 2010

Нет, все в порядке - у вас есть два синонима для одного и того же базового типа - это довольно часто. Однако практика сокрытия того факта, что что-то является указателем с помощью typedef, обычно считается плохой практикой в ​​C.

1 голос
/ 12 мая 2010

Конечно, это возможно. Определяет два разных имени типа, чтобы обозначать одно и то же.

0 голосов
/ 12 мая 2010

В этом случае ptrCall будет фактически относиться к тому же типу, что и ptrNumberContainer. Я думаю, что они также будут совместимы во время компиляции. Так вы можете сказать, например:

ptrNumberContainer p1;
ptrCall p2;

Тогда это будет работать:

p1 = p2;
*p1 = *p2;
0 голосов
/ 12 мая 2010

Это не переопределение. Переопределение относится к определениям макросов:

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