今天,当我遇到像OpenCL这样的函数说明符时,我开始学习_kernel。而不是搜索它,我找到了许多像_inline _noreturn这样的函数说明符。我想知道什么是函数说明符,它的用法是什么?我读过很多C编程书,但从来没有找到过这样的术语?
_Noreturn 上面的说明符类似于void吗?
发布于 2015-07-06 02:16:07
这里有一个很好的链接来解释函数说明符
我引用了一段节选,更准确地回答了你的具体问题:
_Noreturn (自C11) -指定函数不会返回到调用它的位置。
发布于 2015-07-06 02:12:00
你需要一本熟悉C11的书(ISO/IEC 9899:2011)。关键字_Noreturn是一个新的函数说明符,类似于inline (它是在C99或IEC9899:1999中添加的)。它不是void那样的类型(或者没有类型)。_Noreturn意味着函数不返回。例如,C11标准声明exit()是一个不返回的函数:
#include <stdlib.h>
_Noreturn void exit(int status);还有一个标题,<stdnoreturn.h>,它提供
#define noreturn _Noreturn注意,名称_Noreturn来自为实现保留的名称空间;名称noreturn可以由用户使用。任何被_Noreturn破坏的代码都已经滥用了为实现保留的命名空间。
您还可以找到使用编译器特定机制的旧代码,例如GCC中的__attribute__((noreturn))。
通常,函数说明符标识函数的属性,这些属性不是函数的直接类型。例如,inline意味着该函数可能适合内联--它是编译器/优化器的一个提示。类似地,_Noreturn是编译器/优化器的一个提示,即如果调用函数,控件将永远不会返回到调用代码。
发布于 2015-07-06 02:37:35
我有一个全机器可读的C11语法(带有GNU扩展)。
这里引用了有关部分:
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我会接受请求,为其他编译器/语言添加新语法,因为我不知道还有谁在收集它们。
https://stackoverflow.com/questions/31236907
复制相似问题