当我使用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 ]])();
但是没有独立于编译器的解决方案吗?