问题描述
- #define T Connection_T typedef struct T *T;
- #define T Connection_T
typedef struct T *T;
这在gcc下是可以编译通过的,但是我想问接下来T代表什么意思阿?是Connection_T还是什么?还是结构体指针?
解决方案
你用gcc什么版本编译的
我得到的是
Line 2: error: conflicting declaration 'typedef struct Connection_T* Connection_T'
解决方案二:
另外还有没有上下文,还是故意测试编译器行为。这种代码似乎不是为了某种技巧就是毫无道理的。
解决方案三:
接下来T是什么,你直接用它定义一个变量,自己验证一下不就有答案了。
这种代码风格,是不建议的。
解决方案四:
奥,也是,我试试,我看的libzdb的源码,里边出来这么一句,很乱的样子
解决方案五:
看上去是这里来的
http://www.tildeslash.com/libzdb/api-docs/Connection_8h.html
解决方案六:
看上去是这里来的
http://www.tildeslash.com/libzdb/api-docs/Connection_8h.html
解决方案七:
#define T Table_T
typedef struct T *T;
...
#undef T
等价于:
typedef Table_T
Where something is struct Table_T *
http://www.cs.tufts.edu/comp/40/table.html
时间: 2025-01-20 12:19:56