__declspec(noreturn) 函数属性

1、通知编译器该函数不返回。然后,编译器可以通过删除从未到达的代码来执行优化。

2、这个属性具有与 gnu 风格等价的 attribute__((noreturn))。

3、如果函数达到了显式或隐式的返回,则忽略掉 __declspec(noreturn),编译器将生成一个警告

4、使用此属性可减少调用从不返回的函数(如exit())的成本。

5、最佳实践是始终使用while(1);终止不返回的函数。

6、例程

__declspec(noreturn) void overflow(void); // called on overflow
        
int negate(int x) 
{
    if (x == 0x80000000) overflow();
    return -x;
}

void overflow(void)
{
    __asm 
    {
        SVC 0x123; // hypothetical exception-throwing system service
    }
    while (1);
}

__attribute__((noreturn))

你可能感兴趣的:(C语言)