【发布时间】:2014-11-20 00:27:29
【问题描述】:
你知道我为什么会从这段代码中得到这些错误吗?
#define container_of(ptr, type, member) ({\
const typeof( ((type *)0)->member ) *__mptr = (ptr);\
(type *)( (void *) ( (char *)__mptr - offsetof(type,member) ) );})
错误:预期的声明说明符或 '...' 在 '(' 标记
错误:'__mptr' 未声明(在此函数中首次使用)
【问题讨论】:
-
会不会是__mptr 没有在任何地方声明?
-
您使用的是 Visual Studio(或任何非 GCC 编译器)吗?
-
为什么需要括号?他们似乎是问题所在。
-
这篇文章中没有足够的信息。您是在使用宏时遇到错误,还是在defining宏的行中遇到错误?您能否简要摘录一些编译器错误指向的代码行?
标签: c compiler-errors c-preprocessor