c++句法要求,Main()函数定义以函数头int main()开始。
c++中函数可以被其他函数激活或调用,函数头描述了函数与调用它的函数之间的接口。通常由函数返回类型 函数名 (参数列表/形参列表) 的形式构成。
但是这样的通用格式用于main函数有点奇怪,因为通常不会从程序的其他部分调用main,main()通常被启动代码调用,main是作为程序与操作系统之间的接口。
这里简单介绍一下启动代码
启动代码是一段和硬件相关的汇编代码。由编译器添加到程序中,使程序和操作系统的桥梁,它是一个工程中所必不可少的,他的主要作用是: 1 堆栈( SP)的初始化; 2 初始化程序计数器(PC) 3 设置向量表异常事件的入口地地址; 4 调用Main函数。
简而言之,下面的函数头表明main函数可以给调用它的函数返回一个整数值,且不从调用它的函数那儿获取任何信息
int main()
有些地方需要注意:
main()
上面是很多现有程序都使用的经典C函数头,C语言中省略返回类型相当于说函数使int类型,但是c++逐步淘汰了这个用法,可以尝试使用下面的变体:
int main(void)
上面的风格,括号中void指出函数不接受任何参数,在c++(不是c)中,让括号空着和在括号中使用void等效(在c中括号中空着表示对是否接受参数保持沉默)。 还有常使用的下面这种形式:
void main()
逻辑上与int main(void) 是一致的,void返回类型意味着不返回任何值,但是该变体不是标准强制的一个选项,所以有些系统上不能工作,要尽量避免这种格式。 另外ANSI/ISO C++标准对于抱怨main函数最后需要包含返回语句过于繁琐做出了让步,编译器到达main函数末尾没有遇到返回语句时,默认retrun 0; 这种默认仅限于main() 函数。
main()可以使用其他名称吗?
不可以,且大小写和拼写都必须正确,c++程序从main()函数执行,因此,没有main()程序就不完整,编译器将指出未定义main()函数。 当然也有例外情况,例如:
- 在windows编程中,可以编写DLL模块,这是其他windows程序可以使用的代码。由于DLL模块不是独立程序,因此不需要main()。
- 还有专用环境的程序——机器人中的控制芯片等也可能不需要。
- 还有编程环境提供框架程序,该程序调用一些非标准函数,如_tmain()。这种情况下有一个隐藏的main()。
|