gpt4 book ai didi

c++ - [[noreturn]] 函数指针

转载 作者:可可西里 更新时间:2023-11-01 18:40:00 24 4
gpt4 key购买 nike

当我使用 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 ]])();

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

最佳答案

试试这个

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

在您的原文中,说明符的放置使其适用于指针而不是指向的对象。但是 noreturn 指针根本没有意义,您正在尝试对指向 noreturn 函数的指针进行类型定义。

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

关于c++ - [[noreturn]] 函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20006238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com