如果我有
typedef struct tagPAGERANGE
{
int iFirstPage;
int iLastPage;
} PAGERANGE;
我可以向前宣布
struct tagPAGERANGE;
typedef struct tagPAGERANGE PAGERANGE;
但我拥有的是
typedef struct
{
int iFirstPage;
int iLastPage;
} PAGERANGE;
我不知道怎么做。我只想拥有一个指向这个结构的指针。现在我坚持要么包含一个相当实质的标题,要么重复结构的定义。
答案 0 :(得分:12)
这是不可能的。您只能声明命名的结构。
考虑什么标识没有名称的结构,以及如何告诉编译器它是您想要的结构。如果它没有名称,则由其成员识别,因此您需要提供成员 - 即定义它。因此,您不能只是声明它 - 除了定义本身之外,您没有标识符的奢侈。
答案 1 :(得分:2)
由于这是在C ++代码中使用的,所以只是完全摆脱了typedef,它们在C ++中是不必要的和坏的风格。
真正的解决方案是使用命名结构:
struct foo; // forward declaration
struct foo {
// … implementation
};
typedef没用。