Tag: noreturn

为什么“noreturn”函数返回?

我读了关于noreturn属性的这个问题,它用于不返回给调用者的函数。 然后我用C做了一个程序 #include <stdio.h> #include <stdnoreturn.h> noreturn void func() { printf("noreturn func\n"); } int main() { func(); } 并使用此代码生成组装: .LC0: .string "func" func: pushq %rbp movq %rsp, %rbp movl $.LC0, %edi call puts nop popq %rbp ret // ==> Here function return value. main: pushq %rbp movq %rsp, %rbp movl $0, %eax call func 为什么函数func()在提供noreturn属性后返回?

noreturn的意义是什么?

[dcl.attr.noreturn]提供了以下示例: [[ noreturn ]] void f() { throw "error"; // OK } 但是我不明白[[noreturn]]是什么意思,因为函数的返回types已经是void 。 那么, noreturn属性的重点是什么? 它应该如何使用?