typedef 的一个错误

2017-03-14  本文已影响0人  郭青耀

请看下面一个结构体定义,它会在什么时候报错?

typedef struct tagST
{
int a;
int b;
typdef union
{
struct BF *pstNew;
}new;
}XXX;
如果你能答道是在 “typdef union” 行报错,而且也知道是为什么,那么你就没有必要看下去了。否则请继续……

错误在于:

typedef struct tagST
{
int a;
int b;
typdef union
{
struct BF *pstNew;
}new; /这里只是声明/
}XXX;
于是声明中嵌套声明,是不是很奇怪,这里面需要的是一个定义,而不是声明。

正确的写法

typedef struct tagST
{
int a;
int b;
union
{
struct BF *pstNew;
}new; /这里是一个匿名的union 定义/
}XXX;

另外一种正确的写法

typdef union
{
struct BF *pstNew;
}newST;
typedef struct tagST
{
int a;
int b;
newST stNew;
}XXX;
声明了一个 union ,然后在结构体里面使用。
上一篇下一篇

猜你喜欢

热点阅读