本文主要是介绍C++ forbids declaration of ‘typeof’ with no type,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这个错误有点闹心,因为 C++11 把 关键字typeof改为decltype了。
怎么做好两者的兼容性呢,只能使用 if 宏判断来做,比如我的代码:
#if __cplusplus >= 201103L
#define container_of(ptr, type, member) ({ \const decltype(((type *)0)->member)*__mptr = (ptr); \(type *)((char *)__mptr - offsetof_lh(type, member)); })
#else
#define container_of(ptr, type, member) ({ \const typeof(((type *)0)->member)*__mptr = (ptr); \(type *)((char *)__mptr - offsetof_lh(type, member)); })
#endif
参考:
- google-breakpad在 C++11下编译错误 ISO C++ forbids declaration of ‘typeof’ with no type
- 有没有哪个宏,可以标识当前的c++编译器版本,是支持大于等于c++11?
这篇关于C++ forbids declaration of ‘typeof’ with no type的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!