首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是函数说明符?就像_inline _NORETURN

什么是函数说明符?就像_inline _NORETURN
EN

Stack Overflow用户
提问于 2015-07-06 02:08:15
回答 3查看 515关注 0票数 0

今天,当我遇到像OpenCL这样的函数说明符时,我开始学习_kernel。而不是搜索它,我找到了许多像_inline _noreturn这样的函数说明符。我想知道什么是函数说明符,它的用法是什么?我读过很多C编程书,但从来没有找到过这样的术语?

代码语言:javascript
复制
_Noreturn 

上面的说明符类似于void吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-06 02:16:07

这里有一个很好的链接来解释函数说明符

我引用了一段节选,更准确地回答了你的具体问题:

_Noreturn (自C11) -指定函数不会返回到调用它的位置。

票数 2
EN

Stack Overflow用户

发布于 2015-07-06 02:12:00

你需要一本熟悉C11的书(ISO/IEC 9899:2011)。关键字_Noreturn是一个新的函数说明符,类似于inline (它是在C99或IEC9899:1999中添加的)。它不是void那样的类型(或者没有类型)。_Noreturn意味着函数不返回。例如,C11标准声明exit()是一个不返回的函数:

代码语言:javascript
复制
#include <stdlib.h>
_Noreturn void exit(int status);

还有一个标题,<stdnoreturn.h>,它提供

代码语言:javascript
复制
#define noreturn _Noreturn

注意,名称_Noreturn来自为实现保留的名称空间;名称noreturn可以由用户使用。任何被_Noreturn破坏的代码都已经滥用了为实现保留的命名空间。

您还可以找到使用编译器特定机制的旧代码,例如GCC中的__attribute__((noreturn))

通常,函数说明符标识函数的属性,这些属性不是函数的直接类型。例如,inline意味着该函数可能适合内联--它是编译器/优化器的一个提示。类似地,_Noreturn是编译器/优化器的一个提示,即如果调用函数,控件将永远不会返回到调用代码。

票数 0
EN

Stack Overflow用户

发布于 2015-07-06 02:37:35

我有一个全机器可读的C11语法(带有GNU扩展)

这里引用了有关部分:

代码语言:javascript
复制
function-definition:
    declaration-specifiers_opt declarator declaration-list_opt compound-statement

declaration-specifiers:
    storage-class-specifier declaration-specifiers_opt
    type-specifier declaration-specifiers_opt
    type-qualifier declaration-specifiers_opt
    function-specifier declaration-specifiers_opt
    alignment-specifier declaration-specifiers_opt
    attributes declaration-specifiers_opt

function-specifier:
    inline
    _Noreturn

我会接受请求,为其他编译器/语言添加新语法,因为我不知道还有谁在收集它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31236907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档