C++中主函数

C++类模板 .h和.cpp文件要写在一起||要在主函数main中用#include "Test.h" Test是模板类名 最好要将C++类模板的.h和.cpp文件的内容一起写在.h文件中,不要分开 C++模板类和模板函数示例: 模板类Test Test.h #pragma once #include using namespace std; template class Test { public: T a; public: Test(T a); ~Test(); void printT(); }; 阅读详情
很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main( ) { /* ... */ } is not and never has been C++, nor has it even been C. ( void main( ) 从来就不存在于 C++ 或者 C )。下面我分别说一下 C 和 C++ 标准中对 main 函数的定义。
1. C
在 C89 中,main( ) 是可以接受的。Brian W. Kernighan 和 Dennis M. Ritchie 的经典巨著 The C programming Language 2e(《C 程序设计语言第二版》)用的就是 main( )。不过在最新的 C99 标准 中,只有以下两种定义方式是正确的:
int main( void )
int main( int argc, char *argv[] )
(参考资料:ISO/IEC 9899:1999 (E) Programming languages — C 5.1.2.2.1 Program startup)
当然,我们也可以做一点小小的改动。例如: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 中定义了如下两种 main 函数的定义方式:
int main( )
int main( int argc, char *argv[] )
(参考资料:ISO/IEC 14882(1998-9-01)Programming languages — C++ 3.6 Start and termination)
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,则代表程序正常退出,否则代表程序异常退出。下面我们在 winxp 环境下做一个小实验。首先编译下面的程序:
int main( void )
{
return 0;
}
然后打开附件里的“命令提示符”,在命令行里运行刚才编译好的可执行文件,然后输入“echo %ERRORLEVEL%”,回车,就可以看到程序的返回 值为 0 。假设刚才编译好的文件是 a.exe ,如果输入“a && dir”,则会列出当前目录下的文件夹和文件。但是如果改成 “return -1”,或者别的非 0 值,重新编译后输入“a && dir”,则 dir 不会执行。因为 && 的含义是:如果 && 前面的程序正常退出,则继续执行 && 后面的程序,否则不执行。也就是说,利用程序的返回 值,我们可以控制要不要执行下一个程序。这就是 int main 的好处。如果你有兴趣,也可以把 main 函数的返回值类型改成非 int 类型 (如 float),重新编译后执行“a && dir”,看看会出现什么情况,想想为什么会出现那样的情况。顺便提一下,如果输入 a || dir 的话,则表示如果 a 异常退出,则执行 dir 。



5. 那么 intmain(intargc,char*argv[],char*envp[])呢?
这当然也不是标准 C 里面定义的东西!char*envp[] 是某些编译器提供的扩展功能,用于获取系统的环境变量。因为不是标准,所以并非所有编译器都支持,故而移植性差,不推荐使用。

到了这里,你应该了解为什么主函数定义为 int返回类型,而且函数体里面有return 0;这个语句了吧.
下面具体说说我对return的应用的理解。
只要一个函数的返回值是数字型的,那么就可以返回0(即return 0),其实你返回多少都没问题。一般情况下,C++做出来的函数都要求返回一个值, 当函数执行正常,且达到了一般情况下的目的,那么就返回0表示正确的调用了该函数,这个0就是返回给主调函数以通知没有出错的;如果函数调用中出错,或者 没有按照一般情况执行,那么就返回1,以告知主调函数采取响应策略;如果你在某个函数所在类的定义所在的头文件中定义了一组状态值(一般都是负整数),那 么函数就可以返回不同的值以告之主调函数具体发生了什么异常或错误, 这种情况一般用于函数功能独立性较差的的情况。所以一般不鼓励把函数返回类型定义为void,至少返回应该是int,而在函数的最后加上return 0.语句:
int func(参数列表)
{
……
……
……
Return 0;
}
在函数中,如果碰到return 语句,那么程序就会返回调用该函数的下一条语句执行,也就是说跳出函数的执行,回到原来的地方继续执行下去。但是如果是在主函数中碰到return语句,那么整个程序就会停止,退出程序的执行。
如果你定义一个函数有返回类型,可以想下面那样调用:
int func()
{
int value;
……
……
……
return value;
}
int main()
{
int intvalue;
intvalue=func();
……
……
return 0;
}


return语句后面具体是什么内容,这就要具体情况具体分析了:
(1) 在返回类型是char的函数中,return后应该是char类型的值;
(2) 在返回类型是int的函数中,如果是要停止函数的调用,最好应该为0;其他的按照你的目的而定,只要是int 类型就行了
(3) 在返回类型是结构类型的函数中,return后应该是结构的一个实例对象。

总之,函数定义为什么样的返回类型,该函数中return后就应该是相应类型的值。

转自http://www.cnblogs.com/growup/archive/2011/02/26/1971532.html

C++中 调用其他文件中的函数 C++中从其他多个文件中调用多个函数 阅读详情

相关推荐

Fluent新手必看:如何正确解读scaled residuals曲线(附常见问题排查)

本文详细解析了Fluent中scaled residuals曲线的解读方法及常见问题排查技巧。针对continuity残差居高不下、湍流模型收敛困难等典型问题,提供了网格质量检查、边界条件验证和求解策略调整的实用解决方案,帮助CFD新手快速掌握计算收敛性的关键判断标准。

weixin_28698059的博客 377

C++——return的作用

#return的作用 ———来自百度知道 一般情况下,return 有两个作用。 1,此种情况是最普遍的,调用一个函数结束后,从被调函数返回一个值,给主调函数,譬如比较两个正数的大小,并返回较大的值。 int max( int a,int b) { if(a>=b) return a; else return b; } 此函数在运行结束后会返回一个值a或者b给主调函数。 2,return 表示理解结束函数调用,返回主调函数。即使这个函数是没要求返回值的。 还拿刚刚那个比较大小的例子说,刚刚是比较两个正

qq_37263527的博客 4130

”COMSOL“竟然如此简单!我悟了!!

COMSOL Multiphysics具有强大的多物理场全耦合仿真分析功能、高效的计算性能,可以保证数值仿真的高度精确,已被广泛应用于各个学科领域,近年来运用COMSOL来解决电化学实际工程问题也越来越普遍。

C1012562281的博客 3447

C++语言的return语句的一点说明

C++语言的return语句的说明

cnds123的专栏 3633

LAMMPS+Phonopy计算声子色散曲线

机器学习训练完势函数之后,需要对加以验证。对于晶体而言,色散曲线是其衡量计算是否准确的最重要标准,当然,还有能量,比热,RDF等性质。

qq_68842798的博客 3462

第3章 信息技术服务(一)

对 第三章 《信息技术服务》中第一、二、三节 <内涵与外延、原理与组成、服务生命周期>进行总结、归纳

好好学习,天天向上的博客 733

C/C++主函数的定义(return的作用)!

 关于C语言中return的一些总结 return是C++预定义的语句,它提供了种植函数执行的一种放大。当return语句提供了一个值时,这个值就成为函数的返回值. 说到return,有必要提及主函数的定义,下面是从网络上找到的资料,好好消化吧,对了解主函数中返回值的理解有很大的帮助. 很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过vo

风清扬IT博客 7116

学习 Bootstrap 5 之 Tables

学习 Bootstrap 5 之 表格表格 (Tables)1. 创建表格(1). 使用原生的表格标签(2). 使用Bootstrap 5 的提供的表格标签类(3). 原生与Bootstrap创建出来的表格的对比2. 表格样式(1). 表格样式的效果(2). 表格样式的使用1). 用于 <table> 标签2). 用于 <thead> <tbody> <tfoot> 标签 表格 (Tables) 1. 创建表格 (1). 使用原生的表格标签 <tabl

qq_37354060的博客 2130

C++中return的用法和功能

人话:函数就是一个黑箱,其它函数不知道咋产生的结果,也不管它里面能产生什么结果,return是将他产生的结果给其它函数使用的接口,直接给接口一个结果,让里面程序空转也是可以的,即return是控制该函数输出的东西 ,1.2.3.4.5都是基于此基础的(6没研究)6. 支持函数重载:函数的返回值类型是函数重载的一部分,通过不同的返回值类型可以区分同名函数的不同版本。需要注意的是,函数的返回值类型可以是任意的合法类型,包括基本类型(如整数、浮点数)、自定义类型(如类、结构体)以及指针类型等。

Fantasy4040的博客 2384

SoC设计中的RDC陷阱:如何避免异步复位导致的亚稳态问题

本文深入探讨了SoC设计中由异步复位引发的复位域交叉(RDC)陷阱及其导致的亚稳态风险。通过分析实际案例,文章系统性地提出了以同步复位优先、异步复位同步释放为核心的设计原则,并介绍了电路级加固与验证策略,为构建稳健的SoC复位架构提供了实用指南。

weixin_29280657的博客 419

电商数据采集实战——多平台价格监控、比价分析与智能告警系统

在电商竞争日益激烈的今天,价格监控与比价分析已成为品牌商、渠道商和消费者的核心需求。对于品牌商而言,需要监控各渠道售价是否低于指导价(破价监控);对于消费者而言,希望在最佳时机以最低价购入心仪商品;对于数据分析师而言,价格波动数据是洞察市场趋势的金矿。然而,电商数据采集面临三大核心挑战:本文将基于 Python + Scrapy + Playwright + Redis + ClickHouse 技术栈,构建一套完整的电商价格监控与比价系统。架构分层说明:电商平台的反爬手段层出不穷,采集系统必须具备多层次的

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 136

c++中关于return的用法总结

 return是C++预定义的语句,它提供了种植函数执行的一种放大。当return语句提供了一个值时,这个值就成为函数的返回值.     turn,有必要提及主函数的定义。很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写

lchunli的专栏 3万+

手把手教你双目测距理论及生成视差图,深度图,点云图像

Stereo Vision, 也叫双目立体视觉,它的研究可以帮助我们更好的理解人类的双眼是如何进行深度感知的。双目视觉在许多领域得到了应用,例如城市三维重建、3D模型构建(如kinect fusion)、视角合成、3D跟踪、机器人导航(自动驾驶)、人类运动捕捉(Microsoft Kinect)等等。双目测距也属于双目立体视觉的一个应用领域,双目测距的基本原理主要是三角测量原理,即通过视差来判定物体的远近。

qq_53545309的博客 2280

C++中主函数通过头文件调用其他cpp文件中的子函数

当编译并链接这些文件时,main.cpp中的print()调用会解析为check.cpp中定义的print()函数,这是因为链接器在链接阶段找到了这个函数的定义,并将其与main,cpp中的引用匹配起来。1.编译模型:在C++中,每个.cpp文件通常被编译成一个单独的目标文件(object file,通常是.o或.obj文件)。3.可见性:在编译时,一个.cpp文件中的函数对另一个.cpp文件是不可见的,除非这些函数在头文件中被声明,并且该头文件被两个.cpp文件都包含。:在.cpp文件中定义这个函数。

qq_58529413的博客 2333

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

CPP中主函数的参数

 CPP中主函数的参数大部分书中没有介绍,本文详细介绍其中的内容,并举以实例,以飨访友。Arguments to main()1 For CPPYou can define main() with no parameters (or better, with the parameter list as void) or you can specifya parameter list that al

xyhermit的专栏 1617

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C++分文件操作时,在主函数文件中include的是.h文件,而不是.cpp文件,即包含的是声明部分而不是定义部分

C++分文件操作中,主函数源文件没有包含函数的实现源文件.cpp,而只包含了函数的声明头文件.h,那么程序运行是怎么获得函数的实现的呢?其实就是编译器同时编译链接了主函数源文件和函数实现源文件,从而将函数实现加入到了最终的可执行文件.exe中。

lyb06的博客 2194

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C++基础---主函数

1. 主函数 1.1 主函数的定义 一般而言,编写一个能运行在操作系统上的程序,都需要一个主函数; 主函数意味着建立一个独立进程,既是程序的入口,又是程序的出口; 主函数的返回值类型必须是int,这样返回值才能传递给程序的激活者(如操作系统); 主函数的返回值用于说明程序的退出状态,如果返回0,则代表程序正常退出,如果返回非0,则代表程序异常退出; 注:最好不要把太多的细节方面的逻辑直接放在主函数内,这样不利于

Catherine的笔记 1万+

C++主函数main()讲解

http://see.xidian.edu.cn/cpp/biancheng/view/33.html 主函数是一个特殊的函数,不管把它放在代码的什么位置,每个程序的运行都是从主函数开始的。所以,我们说每个程序有且只能有一个主函数,否则电脑将不知道从何运行。既然电脑知道必须有且只能有一个主函数,那么就没必要去写主函数的函数原型了。主函数也能返回值。根据最新的ANSI C++标准,主函数...

diaoyo2388的博客 687

c++中如何在主函数中调用其他文件内的函数?

linux下c++中如何在主函数中调用其他文件内的函数? 需要四个文件:a.cpp包含一个被调用的函数,myhead.h预定义这个函数,3.b.cpp主函数,4.Makefile文件。 1.a.cpp #include "myhead.h" #include using namespace std; int myfun(int a,int b){ std::cout<

江说江湖专栏:欠世界一个伟大的产品! 2万+

ORB-SLAM2主函数main.cpp

不怕大家笑话,主函数我找了好久才找到,甚至是看完了主要的头文件和源文件后,就非常纳闷,主函数呢,跑哪里去来,最后还是一个个翻,原来是在Examples/Monocular里。在这呢主要了解下monotmu下的主函数: #include&amp;lt;iostream&amp;gt; #include&amp;lt;algorithm&amp;gt; #include&amp;lt;fstream&amp;gt; #include&a

sinat_41328554的博客 844

关于C++主函数参数--图文并茂

   关于C++主函数参数--图文并茂 最近在百度知道上看到比较多的人在询问关于主函数参数的问题,所以才打算做一个这个,希望对新手们有所帮助。根据最新的ISO C++的规定,C++的main函数只能有这两种形式:int main(){}或者int main(int argc,char* argv[])

okadler0518的专栏 1568

初入c++ 1.头文件及主函数

大家好,我是lenoix.potter,是初二学生,你们可以叫我felix(隐去的名字),这是我初次在csdn里发布文章,有点期待,也希望我的文章可以使他人收益,那么废话不多说,咱们直接开始我们c++的初始之路。学过Python的人可能对这个词很陌生,这很正常,因为Python中的头文件都已经提前录入好了,所以没有说写头文件的想法。记住无论如何主函数都是int main(),但是如果主函数前面有自定义函数,那么主函数位置后移。那我们下次再见,拜拜!

Lenoix_Potter的博客 547

C++里主函数的英文怎么拼

main|||C/C++的主函数都是main|||C plus|||main()这就是主函数 |||main()或者void main()都行 函数名一般用小写 一个程序有且只有一个主函数

635

C++在不同文件中定义全局常量、类和主函数及相互调用

创建以下文件: 2. MyClass.h 3. MyClass.cpp 4. main.cpp 运行结果 运行程序时,输出将类似于: 这个示例展示了如何将类的声明和实现分开,并且在不同的文件中使用常量和类的方法。

gsgbgxp的博客 467

C++中文编程之如何让一个文件有两个主函数并且不报错

2、不定义大江,走第二个分支。

ydd20058的博客 498
上一篇: 各种变量的存储类型
下一篇: C++头文件有关内容(不断更新)
伟go
博客等级 码龄14年 0粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值