找回密码
 立即注册
收起左侧

C++老鸟日记016 为什么调用函数前需要进行函数声明

2
回复
6580
查看
[复制链接]
累计签到:41 天
连续签到:1 天
来源: 原创 2018-9-8 18:09:31 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 baizy77 于 2018-10-1 20:50 编辑

版权声明
---------------------------------------------------------------------------------------------------------------------
该文章原创于Qter开源社区(www.qter.org
作者: 女儿叫老白 (白振勇)
转载请注明出处!
---------------------------------------------------------------------------------------------------------------------
本套课程属于:《C++跨平台开发干货》系列课程。
-----------------------------------------------------------------------------

引言
-----------------------------------------------------------------------------
       在C语言中,函数调用前无需进行声明,在C++中语法变得严格了,调用函数前必须进行声明,这是为什么呢?

正文
-----------------------------------------------------------------------------
在C++中,是否所有函数在使用前都必须被声明?(P173,第2段)
每个独立的c文件(.cpp 或,c)是一个翻译单元。编译器在每个翻译单元独立运行,这时它只能看到这个单元。
因此头文件所提供的信息是非常重要的,它决定了编译器对程序的其他部分的理解。
在头文件中的声明或在cpp的某个部分的声明是非常重要了,这样编译器可以明确知道需要做什么。
比如,在头文件中声明:void function(double),编译器知道,如果传入一个整数,
那么需要把它转化为都double再调用该接口(这被叫做提升promotion)。
如果没有这样声明,编译器简单的假设有一个function(int)存在,它不会做提升,
错误数据就会被悄悄传递给function()。因为传输的数据在内存中是按照int格式保存的而非double格式。
---------------------------------------------------------------------------
参考资料:《C++编程思想》两卷合订本中文版P125第一段),(美) Bruce Eckel  Chuck Allison著

回复

使用道具 举报

累计签到:50 天
连续签到:1 天
2018-9-11 09:47:42 显示全部楼层
好东西,  数据安全性。      
  问个问题哈。  这个cjson。
float  value;
    value= cJSON_GetObjectItem(taskArry1,"preWarnValue")->valuedouble;  怎么value 是0.0呢?   本来是40.0.
回复 支持 反对

使用道具 举报

累计签到:41 天
连续签到:1 天
2018-9-24 19:42:56 显示全部楼层
tan 发表于 2018-9-11 09:47
好东西,  数据安全性。      
  问个问题哈。  这个cjson。
float  value;

很抱歉,这个问题我不了解呢,没法解答。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了