|
|
发表于 2005-6-21 15:31:03
|
显示全部楼层
恩,认真一下。上午去图书馆找《C语言参考手册》,感觉这应该是能找到的最权威的吧,要不就只能花美刀去买ISO的文件了
在219页第一行,有如下的说法:“如果到达main函数体末尾而没有遇到返回语句,则视为执行return 0;”
不过gcc确实没有返回0,VS2003的编译器cl似乎是返回了一个0的,小弟不大懂汇编,各位看看:
-
- ; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.3077
- TITLE try.c
- .386P
- include listing.inc
- if @Version gt 510
- .model FLAT
- else
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- _DATA SEGMENT DWORD USE32 PUBLIC 'DATA'
- _DATA ENDS
- CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
- CONST ENDS
- _BSS SEGMENT DWORD USE32 PUBLIC 'BSS'
- _BSS ENDS
- $$SYMBOLS SEGMENT BYTE USE32 'DEBSYM'
- $$SYMBOLS ENDS
- _TLS SEGMENT DWORD USE32 PUBLIC 'TLS'
- _TLS ENDS
- FLAT GROUP _DATA, CONST, _BSS
- ASSUME CS: FLAT, DS: FLAT, SS: FLAT
- endif
- INCLUDELIB LIBC
- INCLUDELIB OLDNAMES
- PUBLIC _main
- ; Function compile flags: /Odt
- _TEXT SEGMENT
- _argc$ = 8 ; size = 4
- _argv$ = 12 ; size = 4
- _main PROC NEAR
- ; File c:\try.c
- ; Line 2
- push ebp
- mov ebp, esp
- ; Line 3
- xor eax, eax
- pop ebp
- ret 0
- _main ENDP
- _TEXT ENDS
- END
复制代码
源程序:
- main(int argc, char *argv[])
- {
- }
复制代码 |
|