最佳答案
我阅读了关于 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
属性后返回?