c语言多个子函数声明,C函数在多个源文件中的声明和定义

这是src1.c的内容:

#include

extern int w;

//int go(char); // no need to declare here. WHY????

main(){

char a='f';

go(a);

printf("%d\n", w);

}

这是src2.c的内容:

#include

int w = 99;

int go(char t){

printf("%c\n%d\n",t,sizeof(t));

}

为什么在Linux中编译后,在src1.c文件中声明go函数是不是必须?

cc src1.c src2.c;

编译器是否将src2.c文件中的go函数定义放在main函数的代码上面,这样就不需要声明了?

我这样做:

#include

int go(char); // need to declare here, because if not, arguments of go will be promoted to intS and they would conflict with char parameters defined in go. Error is droped!

main(){

char a='f';

go(a);

}

int go(char t){

printf("%c\n%d\n",t,sizeof(t));

}

所以每个人都说,在没有原型的情况下传递任何数量和类型的参数是错误的.在这种情况下,它们被提升为整数,但必须同意定义中指定的那些.

我做了一些测试,发现即使它编译没有错误它也无法正常工作.

SRC1:

#include

int go(int t){

printf("%d\n%d\n",t,sizeof(t));

}

sr2.c:

#include

int go(int); //if I omit this prototype, program outputs 1 which is far from correct answer :)

main(){

double b=33453.834;

go(b);

}

所以最后答案只能是未定义的行为.

谢谢Maxim Skurydin

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode--200. 岛屿数量

给定一个由 1(陆地)和 0(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 1: 输入: 11110 11010…

看懂2020年智能浪潮,我们从百度和谷歌的AI足迹出发

来源: 脑极体2020年已经过去,无论我们过得顺遂平安,还是过得无比艰难,我们应该都会记住这一年。回顾2020年,在这个不同寻常的疫情之年,科技成为人类抗击疫情的关键,而人工智能技术投入抗疫战争之…

公交换乘系统c语言,公交换乘的简单实现(源码)

最初是做2004年某期《程序员》杂志上的一道题,叫“洞穴探险”,结果写着写着就做到公交换乘的思路上去了。看来做GIS做久了,都成习惯了。后来工作忙,就扔下了。最近翻看以前自娱自乐时写的东东,看到了这段代码&#xff…

记使用talend从oracle抽取数据时,数字变为0的问题

数据源为oracle,字段类型为number。 发现通过mainline连接到一个logrow控件,输入的该字段的值为0 经过多次测试还是没发现有什么规律。 通过查看代码发现有这一句内容。 if (row2.ID ! null) { //strBuffer_tLogRow_1.append(row2.ID.setScale(-127,java…

Leetcode--494. 目标和

给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号 和 -。对于数组中的任意一个整数,你都可以从 或 -中选择一个符号添加在前面。 返回可以使最终数组和为目标数 S 的所有添加符号的方法数。 示例 1: 输入: nums…

C语言int r(int m),INT(M)表示什么意思?

根据官方文档描述,int(M)中的M表示数据显示的宽度,与实际存储的长度无关。1、也就是int(3)和int(11)能够存储的数据是一样的,都是从-2147483648到2147483647(或者0-4294967295)。2、int(M)只有联合zerofill参数才能有意义,否则int…

2021年值得关注的人工智能与机器学习的五大趋势

文章来源:科技心时代人工进行智能和机器可以学习是市场上的热门专业技术,其重要性在2020年达到顶峰,这两种信息技术发展已经到了广泛应用在各行业领域,其范围从电子商务到量子计算管理系统,从医疗诊断分析系统到消费电…

关于java子类继承以及final问题总结

(1)子类和父类如果在同一个包内,则子类可以继承父类的除private以外的所有成员变量和方法,并且权限不变; (2)子类和父类如果不在同一个包内,则子类可以继承父类的public和protected权限的成员变量和方法,不能继承友好型…

物理层基本概念

物理层解决如何在连接各种计算机的传输媒体上传输数据比特流 物理层定义了一些传输媒体接口的标准 定义了哪些标准? 1.机械特性 定义物理连接的特性,例如接口形状,引线数目,引脚数量等 2.电气特性 规定传输二进制位时&#…

qt android 应用程序图标大小,vs+qt 设置应用程序图标

LaTeX 学习记录4-字体设置LaTeX 学习记录4-字体设置 % 导言区\documentclass[10pt]{ctexart}%10pt为字体大小%使用ctexart后就可以不引用ctex宏包了\title{\heiti My LaTeX Document}%字体为黑体\author{\kaishu forever}%字体为楷书\date{\today}% 正文…

城市生态的机器人革命

来源: 脑极体城市居民能看到绿色、与自然亲近的机会,被高楼大厦挤压得越来越少,如果有一天,连机器人、无人车和无人机都要来侵占人类的休闲空间,会发生什么呢?至少目前看来,如果不采取措施&…

spring boot 三种入参

先来讲述下最简单的使用get请求用户信息的实现方式,代码如下,写好后直接在Application类点击右键有个RunAs,点击后会自动运行,运行成功后可以使用http发包工具进行测试,这里推荐使用chrome的postman或者使用firefox的httprequeste…

数据通信基础知识

常用的两种入网方式: 1. 电话线入网 电话线发出来的是数字信号,需要用调制解调器(🐱)转换位模拟信号 例如:我计算机发 在吗 ,电话线发出来是01011100, 调制解调器把数字信号转为模拟信号发到广域网 之…

android okhttpclient设置编码,Android之okhttp实现socket通讯(非原创)

文章大纲一、okhttp基础介绍二、socket通讯代码实战三、项目源码下载四、参考文章一、okhttp基础介绍二、socket通讯代码实战1. 添加依赖和权限app的build.gradle下添加okhttp依赖implementation com.squareup.okhttp3:okhttp:3.8.1AndroidManifest.xml文件添加网络权限2. 添加…

张小龙两小时演讲全文:微信十年的产品思考

来源:微信公开课(ID:wx-gongkaike)文:张小龙大家好!谢谢来到公开课现场的朋友们,让我感受到这是一个面对面的交流,而不是一个人面对屏幕的直播。2020,对很多人来说都是很…

Leetcode--113. 路径总和Ⅱ

给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum 22, 5 / \ 4 8 / / \ …

android url格式化,Android利用SpannableString实现格式化微博内容

前言在Android开发中,有许多信息展示需要通过TextView来展现,如果只是普通的信息展现,使用TextView setText(CharSequence str)设置即可,但是当在TextView里的这段内容需要截取某一部分字段,可以被点击以及响应响应的操…

[Unity]限制两个物体之间的距离

//限制两个物体之间的距离 if (Vector3.Distance(B.position, A.position) > maxDistance) {//获得两个物体之间的单位向量Vector3 pos (B.position - A.position).normalized;//单位向量乘以最远的距离系数pos * maxDistance;//物体A的坐标加上距离向量B.position pos A…

Leetcode--226. 翻转二叉树

翻转一棵二叉树。 示例: 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 提交的代码: /** * Definition for a binary tree node. * public class TreeNode { *…

2021年中国AIoT产业全景图谱

来源:物联网智库(iot101)编辑:蒲蒲日前,在“2020 AIoT产业年终盛典”上,物联网智库正式发布全新升级版的《2021中国AIoT产业全景图谱报告》(以下简称“报告”)。据悉,这是…