c – [[noreturn]]函数指针

前端之家收集整理的这篇文章主要介绍了c – [[noreturn]]函数指针前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我使用clang(版本3.4(主干194574))来编译它:
typedef void (* FunctionThatNeverReturns [[ noreturn ]])();

我明白了:

error: 'noreturn' attribute only applies to functions and methods

这让我感到惊讶,因为它与旧版本的clang完美搭配.

那么如何定义指向[[noreturn]]函数的指针呢?

我需要这个因为我在[[noreturn]]函数调用函数指针,如果函数指针没有标记为noreturn,它显然会产生警告.

哦,这有效:

typedef void (* FunctionThatNeverReturns [[ gnu::noreturn ]])();

但是没有独立于编译器的解决方案吗?

解决方法

试试这个
typedef void (* FunctionThatNeverReturns)() [[ noreturn ]];

在原始文件中,放置说明符,使其适用于指针而不是指向的对象.但是一个noreturn指针完全没有任何意义,你试图键入一个指向noreturn函数的指针.

演示:http://ideone.com/9mBR9x

猜你在找的C&C++相关文章