`
clark1231
  • 浏览: 253507 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

戒除main函数返回值为void的坏习惯

c++ 
阅读更多

有同学在升级MinGW以后说以前写的程序编译不通过或者编译过程中报告警告,经过检查他的代码是下面的样子:

void main(){}这段代码看起来没有错误。而且在MinGW2.9.5下编译也没问题,但是如果升级到3.4.5以后,如果是“.c”后缀的源代码(也就是C语言)则会报 警告(warning),如果是“.cpp”后缀的源代码(也就是C++语言)则会报编译错误。有同学认为这是MinGW3.4.5的BUG,其实这是咱 们写的代码不规范造成的。很多人甚至市面上的一些书籍,都使用了void main( ),其实这是错误的。C/C++ 中从来没有定义过void main( )。

 

1. C语言中在 C89(C语言的早期标准)中,main() 是可以接受void返回值的。Brian W. Kernighan 和 Dennis M. Ritchie 的经典巨著 The C programming Language(《C 程序设计语言》)用的就是void main( )。不过在最新的 C99 标准中,只有以下两种定义方式是正确的: int main( void ) int main( int argc, char *argv[] ) 当然,我们也可以做一点小小的改动。例如:char *argv[] 可以写成 char **argv;argv 和 argc 可以改成别的变量名(如 intval 和 charval),不过一定要符合变量的命名规则。 如果你不需要从命令行中获取参数,请用 int main( void ) ;否则请用 int main( int argc, char *argv[] ) 。 main 函数的返回值类型必须是 int ,这样返回值才能传递给操作系统。 如果 main 函数的最后没有写 return 语句的话,C99 规定编译器要自动在生成的目标文件中(如 exe 文件)加入 return 0 ,表示程序正常退出。不过,我还是建议你最好在 main 函数的最后加上 return 语句,虽然没有这个必要,但这是一个好的习惯。注意,vc6 不会在生成的目标文件中加入 return 0 ,大概是因为 vc6 是 98 年的产品,所以才不支持这个特性。现在明白我为什么建议你最好加上 return 语句了吧!不过,gcc3.2(Linux 下的 C 编译器)会在生成的目标文件中加入 return 0 。

 

2. C++ 语言C++98(C++语言的一个标准)中定义了如下两种 main 函数的定义方式: int main( ) int main( int argc, char *argv[] ) int main( ) 等同于 C99 中的 int main( void ) ;int main( int argc, char *argv[] ) 的用法也和 C99 中定义的一样。同样,main 函数的返回值类型也必须是 int 。如果 main 函数的末尾没写 return 语句,C++98 规定编译器要自动在生成的目标文件中加入 return 0 。同样,vc6 也不支持这个特性,但是 g++3.2(Linux 下的 C++ 编译器)支持。

 

3. 关于 void main 在 C 和 C++ 中,不接收任何参数也不返回任何信息的函数原型为“void foo(void);”。可能正是因为这个,所以很多人都误认为如果不需要程序返回任何信息时可以把 main 函数定义成 void main(void) 。然而这是错误的!main 函数的返回值应该定义为 int 类型,C 和 C++ 标准中都是这样规定的。虽然在一些编译器中,void main 可以通过编译(如 vc6),但并非所有编译器都支持 void main ,因为标准中从来没有定义过 void main 。g++3.2 中如果 main 函数的返回值不是 int 类型,就根本通不过编译。而 gcc3.2 则会发出警告。所以,如果你想你的程序拥有很好的可移植性,请一定要用 int main 。4. 返回值的作用main 函数的返回值用于说明程序的退出状态。如果返回 0,则代表程序正常退出,否则代表程序异常退出。

分享到:
评论

相关推荐

    帮助学生戒除网瘾小组工作总结.doc

    "帮助学生戒除网瘾小组工作总结" 本文档总结了一个帮助学生戒除网瘾的小组工作,旨在帮助初中生学生戒除网瘾,提高自信心,改善人际关系和学习成绩。小组的类型为成长性小组,小组成员都是沉迷网络的初中生,通过...

    习惯的力量主题班会.ppt

    【习惯的力量】是一个重要的主题,尤其对于学习和成长...无论是学习还是日常生活,我们都应积极培养有益的习惯,同时警惕和努力戒除不良的习惯。通过持之以恒的实践,我们可以利用习惯的力量塑造更好的自己,迈向成功。

    《戒除网瘾》主题班会[文].pdf

    《戒除网瘾》主题班会[文].pdf

    如何培养幼儿的良好习惯.doc

    通过埃德温·格斯里的戒除不良习惯方法,如设定明确目标、榜样示范和训练法,可以帮助幼儿改正如过度吃零食等坏习惯。 **学习要求** 学习者需理解习惯的定义和特征,掌握幼儿习惯的内涵和形成特点,理解如何通过...

    甘肃省岷县二中2018_2019学年高二英语上学期期中试题

    如何有效地摆脱坏习惯 在我们的生活中,无论是有意还是无意,我们都有可能会养成一些不好的习惯。这些习惯可能对我们的健康、学习或人际关系产生负面影响。针对如何有效地去除坏习惯,以下是一些实用的建议: 首先...

    电击手表放电手环起床神器Pavlock的软件源代码

    电击手环就是可以产生静电脉冲的智能手环,它主要的功能就是早起闹钟,以及电击防疲劳,另外有一些人用电击手表来戒除坏习惯(心理学领域的电击厌恶疗法),它可以产生将近500伏的静电脉冲,目前市面上电击手表主要...

    电击手表放电手环的手机端App源代码

    电击手环就是可以产生静电脉冲的智能手环,它主要的功能就是早起闹钟,以及电击防疲劳,另外有一些人用电击手表来戒除坏习惯(心理学领域的电击厌恶疗法),它可以产生将近500伏的静电脉冲,目前市面上电击手表主要...

    你可以退出:一种工具,可以支持你在戒除不良习惯方面的进步

    这个程序是跟踪您的进度并鼓励您戒掉不良习惯的工具。 在简单的日历视图中,您可以设置过去成功或失败的日子。 根据这些数据,您可以看到有关成功天数的令人鼓舞的统计信息。此外,您可以获得特殊成就,可以实现...

    how to keep healthy PPT教案.pptx

    再者,戒除如吸烟和饮酒等不良习惯也是保持健康的关键。这些习惯严重损害健康,应当戒除。尽管这些建议众所周知,但实际执行的人却不多。 在阅读理解部分,PPT教案训练学生快速浏览(skimming)以获取文章总体概念...

    政治综合处承诺书.docx

    改正这些坏习惯,不仅可以改善个人与家人的关系,也能帮助建立更健康、更有责任感的生活方式。 总的来说,这份看似“政治综合处承诺书”的文档,实际揭示的是青少年时期常见的问题——对科技的过度依赖以及对长辈...

    赖世雄中级美国英语教程下 pdf

    教材中的课程设计也体现了对日常生活中常见情景的模拟,如“Traveling by Plane”(乘飞机旅行)和“Kick the Habit”(戒除坏习惯)。这说明《中级美国英语教程》重视英语在实际生活中的应用,引导学生将学到的语言...

    黑龙江高考语文作文.docx

    - 张叔叔的故事警示我们,改变坏习惯并非易事,需要坚定的决心和实际行动。 5. **故事叙述** - 运用插叙手法,如张叔叔的回忆,丰富故事内容,增加叙事深度。 - 结尾往往留给读者思考空间,小女孩的故事未完,...

    安徽专版2020中考英语复习方案完形填空02师之智慧+忠之良言试题人教新目标版

    11. 固定搭配:"cling to"表示紧紧抓住、坚持不放,这里表示人们不愿意改变坏习惯。 12. 名词辨识:"dangers"与"smoking"结合,表示吸烟的危害。 13. 然而转折:"However"用于句首,表示尽管有警告,很多人仍然...

    网络安全主题班会教案.pdf

    网络安全主题班会旨在引导学生理解和应对网络成瘾问题,提高他们的网络素养,培养健康的网络使用习惯。教学目标分为知识与技能、过程与方法以及情感与态度三个层面。 知识与技能目标: 1. 让学生理解安全使用网络的...

    2018七年级英语上册Unit6Doyoulikebananas单词+重点句型语法解析新版人教新目标版

    我们可以通过"develop/form the habit of…"来培养习惯,或用"break/give up the habit of…"来戒除坏习惯。 4. **形容词"Healthy"及其相关概念**: - "healthy"形容词,表示健康的,其名词形式是"health",副词是...

    高中英语Unit2Workingtheland评测练习新人教版必修4

    你必须戒掉吸烟的坏习惯。(戒除掉:get rid of) - 5. 对学生的成绩感到满意,他如释重负地笑了。(满意:satisfied,如释重负:feel relieved) - 6. 他宁愿待在家里看电视也不愿去打篮球。(宁愿...也不愿:...

Global site tag (gtag.js) - Google Analytics