相关疑难解决方法(0)

main()中的return语句vs exit()

我应该使用exit()还是只是return声明main()?我个人赞成这些return陈述,因为我觉得这就像在阅读代码时读取任何其他功能和流量控制一样顺畅(在我看来).即使我想重构main()函数,return看起来似乎是一个更好的选择exit().

做一些exit()不特别的事return吗?

c c++ coding-style return exit

188
推荐指数
6
解决办法
7万
查看次数

退出和退货有什么区别?

从C程序中的任何地方调用时,C编程中的return和exit语句有什么区别?

c

86
推荐指数
3
解决办法
8万
查看次数

main 与 _start 中的返回值

请注意,这个问题在这里已经有类似的答案,我想指出:

然而,这个问题更多地询问它们的返回格式以及它们如何相互关联(我认为上面的问题没有完全涵盖)。


_start和之间有什么区别main?在我看来,像ld用途_start,但gcc用途main为切入点。我注意到的另一个区别是main似乎返回值 in %rax,而_start返回值 in%rbx

以下是我看到的两种方式的示例:

.globl _start
_start:
    mov $1, %rax
    mov $2, %rbx
    int $0x80
Run Code Online (Sandbox Code Playgroud)

并运行它:

$ as script.s -o script.o; ld script.o -o script; ./script; echo $?
# 2
Run Code Online (Sandbox Code Playgroud)

另一种方式:

.globl main
main:
    mov $3, %rax
    ret
Run Code Online (Sandbox Code Playgroud)

并运行它:

$ gcc script.s -o script; ./script; echo $?
3
Run Code Online (Sandbox Code Playgroud)

这两种方法有什么区别?是否main自动调用_start某处,或者它们如何相互关联?为什么一个返回它们的值,rbx而另一个返回它的值rax …

c assembly program-entry-point x86-64

0
推荐指数
1
解决办法
278
查看次数

标签 统计

c ×3

assembly ×1

c++ ×1

coding-style ×1

exit ×1

program-entry-point ×1

return ×1

x86-64 ×1