当我使用clang (版本3.4 (trunk 194574)
)编译以下内容时:
typedef void (* FunctionThatNeverReturns [[ noreturn ]])();
我收到了这个内容:
error: 'noreturn' attribute only applies to functions and methods
这让我感到惊讶,因为它在旧版本的clang中完美运行。
那么,我该如何定义指向[[noreturn]]
函数的指针?
我需要这样做是因为我正在一个[[noreturn]]
函数中调用函数指针,如果函数指针没有标记为noreturn,则会产生警告。
哦,这个也可以:
typedef void (* FunctionThatNeverReturns [[ gnu::noreturn ]])();
但是是否没有独立于编译器的解决方案呢?