Переадресация объявления typedef неназванной структуры [duplicate]
Возможные Дубликаты:
вперед объявления неназванной структуры
если у меня есть
typedef struct tagPAGERANGE
{
int iFirstPage;
int iLastPage;
} PAGERANGE;
Я могу вперед объявить его таким образом
struct tagPAGERANGE;
typedef struct tagPAGERANGE PAGERANGE;
но у меня есть
typedef struct
{
int iFirstPage;
int iLastPage;
} PAGERANGE;
Я не уверен, как я могу сделать это. Я только хочу держать указатель на эту структуру. Прямо сейчас я застрял либо с включением довольно существенного заголовка, либо с дублированием определения структура.
2 ответов
Это невозможно. Вы можете объявлять только именованные структуры.
подумайте о том, что идентифицирует структуру, у которой нет имени, и как вы говорите компилятору, что это та структура, которую вы хотите. Если у него нет имени, он идентифицируется его членами, поэтому вам нужно предоставить члены - т. е. определить его. Поэтому вы не можете просто объявить его-у вас нет роскоши идентификатора, кроме самого определения.
поскольку это используется в коде C++, просто избавьтесь от typedefs вообще, они ненужны и плохой стиль в C++.
реальное решение-просто использовать именованные структуры:
struct foo; // forward declaration
struct foo {
// … implementation
};
typedefs не полезны.