为什么main函数如何调用里调用函数不能加类型

欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 6083 人关注过本帖
标题:自定义函数必须放在main函数之前吗?
来 自:阿修罗界
等 级:职业侠客
帖 子:162
专家分:311
结帖率:92.86%
&&已结贴√
&&问题点数:5&&回复次数:7&&&
自定义函数必须放在main函数之前吗?
如题,我看的书上的例题等自定义函数都是很随意放的,有放在main前的,也有main后的。可是我写的程序只要把自定义函数放在后面编译的时候就会提示main函数调用的自定义函数未定义。我觉得,如果自定义函数多的时候,都放在main前的话,代码看起来不方面,就不能放在main后面定义吗
搜索更多相关主题的帖子:
等 级:青峰侠
帖 子:388
专家分:1809
规范一点 都在前面声明 后面实现
我们的目标只有一个:消灭0回复!
来 自:阿修罗界
等 级:职业侠客
帖 子:162
专家分:311
以下是引用mmmmmmmmmmmm在 19:07:34的发言:
规范一点 都在前面声明 后面实现前面声明 后面实现,怎么理解?
等 级:青峰侠
帖 子:388
专家分:1809
程序代码:void f();//在这里声明
int main()
//在这里实现
以下是引用fxbszj在 19:15:30的发言:
前面声明 后面实现,怎么理解?
我们的目标只有一个:消灭0回复!
等 级:新手上路
放在后面出错,那是因为你没申明呢!
来 自:四川,成都
等 级:论坛游民
帖 子:22
专家分:53
LZ搞清楚声明和定义,也就是declaration和definition的区别,就可以了。
一般是在main()前面声明-就是写出函数的prototype原型;最后在main()的{}后面写出函数的定义体。
就Good了。
拿分走人。
等 级:青峰侠
帖 子:388
专家分:1809
楼上 你拿到什么分了
我们的目标只有一个:消灭0回复!
来 自:阿修罗界
等 级:职业侠客
帖 子:162
专家分:311
回复 4楼 mmmmmmmmmmmm
版权所有,并保留所有权利。
Powered by , Processed in 0.097779 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(6271)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'JAVA的Main函数中调用类方法的问题',
blogAbstract:'[本文已迁移至'
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}新人求教,如何在类里面写一个函数,且main函数里面可以调用【c++吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:288,527贴子:
新人求教,如何在类里面写一个函数,且main函数里面可以调用收藏
就是在类里面写一个函数,然后在main函数里面调用,谢谢啦,而且怎么写构造函数,构造函数是干嘛用的啊?
这种问题就不要在这问了吧,随便找本书,看一下关于类的那一章就搞定了,
詹姆斯都哭了...
这个貌似还要看名称空间这章,构造函数式用来初始化类的,定义对象后可以像初始化基本数据类型哈样初始化对象,比如int a=0这样的,没定义构造函数的话编译器就会自己定义一个,就不能初始化对象了,我也是看了两遍才弄明白的,大概就是这样,楼主还是找一本书看看吧,会有详细的说明···
...我了个大擦
如果要调用该函数定义类的时候该函数至少要是public的!如果是static的可以用 类名::函数名 来调用!否则需要构造一个类的实例来调用!
登录百度帐号推荐应用xcode5 中为什么我的main函数中要使用一个类,但是我引入的是.h文件就会抱错,引入.m文件就不会 为什么?我用的xcode5 自己刚学了一两天的Objective-c
全部答案(共1个回答)
苹果系统和你的微软系统不兼容
出厂设置只是“设置”而已,就是原来手机存了100个电话号码,现在全忘记了。。。这和操作系统没有关系的。操作系统的改变叫“刷固件”,而且一般只能升级不能降级,除非...
是软件问题,苹果已经在新版本的系统修复此问题,但要升级此新版本,需要用电脑升级《赠人玫瑰手有余香,祝您好运一生一世,如果回答有用,请点“好评”,谢谢^_^!》
机箱可以留下,里面的东西全换吧。CPUINTEL I3 2120730主板微星ZH77A-G43749显卡微星N560GTX 至尊V5 15/SE1039内存宇...
你的鼠标质量还算不错,滚轮鼠标由于有机械磨损,一般鼠标1年以后就不行了,好的可以支持3,4年,即使清理,一段时间以后也会很难用的。由于鼠标价格便宜,喝多人清理都...
答: 去南极的同学那个emergency evacuation insurance都怎么买的啊?
答: cisco网络技术是一个为CTO、IT技术经理、网络工程师、安全工程师、数据库工程师、网络管理员、系统工程师、开发工程师、项目管理人员等IT技术人员搭建的有关先...
答: 我想学网页制作、网络维护、电脑维护可有比较好的学习网站或者论坛推选一下?你好!网易学院
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415解析在main函数之前调用函数以及对设计的作用详解
字体:[ ] 类型:转载 时间:
本篇文章是对在main函数之前调用函数以及对设计的作用进行了详细的分析介绍,需要的朋友参考下
前几天为新员工写一个简单的测试框架,可让他们方便的写测试用例并且执行。期间遇到一个问题就是如何让他们增加测试用例而用不影响测试框架的代码?c++的单件模式可以解决这个问题,但是其中一个难点是要在main之前注册单件。c++可以通过构造函数来实现注册,c如何注册?最后查了下资料,原来可以定义在main之前调用的函数!有了这个特性可以改善c的模块化设计。特性介绍:如果想定义在main函数之前调用的函数,可以在函数的声明之后加上一句“__attribute__((constructor))”,如下:int before()__attribute__((constructor));如果想定义在main函数之后调用的函数,可以在函数的声明之后加上一句“__attribute__((destructor))”,如下:int after()__attribute__((destructor));可以看得出来,应该类似于c++中的构造和析构。一些细节问题:写测试代码测试了一下这个程序,发现几点:1、before在main之前调用,调用之前,各个全局变量已经完成初始化。也就是说,这些函数是在全局变量初始化之后,main函数之前调用的。这一点是非常重要的,否则可能会引起很多的问题。2、after在main之后调用,但是有一点比较特殊,必须是在main中return的话才执行,否则,需要通过atexit执行某函数。这个特性目前对我没有太大的用处。3、在main函数之前调用的函数可以声明为static。4、在main函数之前调用的函数可以调用多个。这里就有一个问题,就是这些函数的调用顺序的问题。这个问题首先是一个设计的问题,也就是,我们应该设计这些函数为顺序无关的函数。另外,调用顺序和编译的顺序相关,我在linux下使用make进行编译,发现最后编译的源文件中的函数会最先调用。5、可以在库(动态库和静态库)中定义这样的函数。用对设计的作用:1、可以优化c++中的单件模式。参考《设计模式》单件模式有一个最大的特点就是可以在运行过程中连接单件。如果使用条件语句来决定使用哪个单件硬性限定了可能的单件集合。所以,书中引入了一个单件注册表的概念,书中对单件注册表的初始化采用的是如下的做法:首先定义一个单件类,在单件类的构造函数中调用单件的注册函数注册自身: 代码如下:MySingleton::MySingleton(){...Singleton::Register("MySingleton", this);}这个函数是怎么被调用的那?可以定义一个静态实例:static MySingleton theS这样就会在main函数之前调用MySingleton的构造函数来构造这个静态实例,从而达到像注册表注册的目的。这个方案有个缺点:它能够成功存在一个前提,就是在theSingleton实例化之前,单件注册表列表必须存在,否则会失败。则其实只是一个可能失败的点,如果MySingleton还应用其他的全局变量,则可能这个时候这些全局变量还没有初始化。解决这个问题的一个方案就是将单件注册的时间由构造函数移到main函数之前调用的函数中来。定义函数: 代码如下:static void before_main(){Singleton::Register("MySingleton", &theSingleton);}声明:staitc void before_main()__attribute__((constructor));before_main会在main函数之前调用,而调用时全局变量已经全部初始化,这样就可以避免上面的问题。其实单件不单单可以在c++(面向对象)中使用,也可以在c中使用。而且有了c的这个特性后,单件更好用。2、构造插件开发框架,而不用对框架进行更改。构造插件开发框架的一个问题是:如何新增一个插件而不用修改主框架代码就可以调用插件代码。一般情况下都会使用插件注册机制。也就是框架对外提供注册接口,插件使用这些接口进行注册。c要实行此功能,一个可行的方案是在插件中定义main之前执行的函数,在此函数中调用插件注册接口完成注册。(注:这里讨论的是插件的静态加载)。3、一个模块有一些初始化工作要做,使用这种机制可以不更改main或者函数。抛开插件框架,使用这个特性也可以对c的模块化进行很多优化。比如,可以把各个模块的初始化工作放在main之前进行从而防止对main的频繁修改。注:本文描述的环境为linux c,c++。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 main函数的返回类型 的文章

 

随机推荐