一种解释
实际上,在可执行文件被知孙加载之后,控制权立即交给由编译器插入的Start函数,它将对后面这些全局变量进行准备:
_osver *** 作系统的构件编号
_winmajor *** 作系统的主版本号
_winminor *** 作系统的次版本号
_winver *** 梁塌作系统完全版本号
__argc 命令行参数个数
__argv 指向参数字橡猛圆符串的指针数组
_environ 指向环境变量字符串的指针数组
Start函数初始化堆并调用main函数.mian函数返回之后,Start函数调用Exit函数结束该进程.
启动函数Start的源代码在:
crt0.c Microsoft Visual C++
c0w.asm Borladn C++
c语言编译器对于源代码的编译是顺序编译的,当你的任意一个函数中调用某个函数的时候,这个函数的原型必须在调用之前声明孝埋,否则就会出现编译错误,例如:void a(int b)
{
printf("%d\n", b)
}
int main(int argc, char *argv)
{
a(10)
return 0
}
以上的程序迟旁就没有问题巧旦蚂,如果两个函数的位置倒一下,就会报错,解决办法是,将函数“a”的原型在main之前声明,如:
void a(int b)
int main(int argc, char *argv)
{
a(10)
return 0
}
void a(int b)
{
printf("%d\n", b)
}
你可以这样试试。
看什么编译器,有的编译器,可以默认包含枯袜stdio.h,就不用include而且,如果不用任何函搭败弊知族数,所有编译器都可以不用include
比如
int
main()
{
int
a
=
1
int
b
=
2
int
c
=
a
+
b
return
(c)
}
只有main就可以
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)