yo!这里是函数声明与函数定义在开发环境中的用途

2023-10-20 09:10

本文主要是介绍yo!这里是函数声明与函数定义在开发环境中的用途,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前言

函数声明与函数定义

静态库

用途

小B视角:

小A视角:

额外收获


前言

       在刚开始的的学习过程中,我们编写一个函数,通常情况下放在main函数的前面,保证在主函数中调用可以编译过去,经过进一步的学习,引进了函数声明和函数定义的概念,具体介绍见下方,此时就将函数声明放在整个文件的最上方,那么编写的函数就可以放在相对于主函数的任意位置了。但是这都不是关键,本文对此不做过多赘述,下面告诉大家函数声明与函数定义在开发环境中的真正用途。

函数声明与函数定义

       函数声明就是函数头,目的就是告诉编译器我编写了这样的一个函数,在主函数遇到了就给我编译过去,包括返回值、函数名、参数列表(参数的变量名可以不加,但参数的数据类型一定要有),比如,int add(int x,int y);或者int add(int ,int );

       函数定义就是对函数功能的实现,要求函数头与声明一致,且参数必须有变量名。

静态库

       笔者学识尚浅,无法在此解释静态库的相关介绍,不过无碍于笔者想通过本文传达的核心内容,感兴趣的可以的参考http://t.csdn.cn/H38io

用途

       通常情况下,为了满足开发环境的需求,会将函数声明放进.h头文件,将函数定义放进.c/.cpp功能实现文件中,在头文件可以加上函数的介绍以及调用方法,而功能实现文件就可以编译成.lib静态库文件,以达到程序员是否公开此函数的目的。

       举个栗子~有程序员A和程序员B,一天,小A需要一个函数,但他不会写或者懒得写,此时他想要出米让小B给他写,但是小B认为可以给他写,但不提供这个函数的具体功能实现,小A就答应了,小B经历了三天两夜的奋战,终于写出了小A所要求的算法函数。

小B视角:

(头文件Add.h)

 (函数功能实现文件Add.c)

此时,小B开始加密的操作,即 将Add.c编译成静态库文件

1.点击项目名称,右击属性

2.在常规属性中找到配置类型,选择静态库

3.点击生成中的生成解决方案,此时生成了一个静态库.lib文件

4.根据上图找到.lib文件并用记事本打开(可以看到全是乱码,这就保证了小A是看不到具体实现的)

5.将Add.c和ADD_4_19.lib发送给小A


小A视角:

1.编写所需算法的主函数(main.c)

2.将小B发送来的文件导入到main.c所在文件夹,并且在vs中把Add.h打开

3.在main.c中顶部写上  #pragma comment(lib,"ADD_4_19.lib")  

 4.此时运行代码,没毛病(小B的算法小A可以用,但小A看不到具体实现过程)

额外收获

       在这里,有的老铁就发现了,这跟加上#include <stdio.h>就可以使用printf和scanf函数的情况差不多。对,xue得对!

       vs开发人员将printf等库函数的实现编译成了一个静态库,程序员加上头文件就可以使用此函数,当我们打开printf函数介绍时可以看到,如图的三个.lib文件就是printf函数的底层实现。

 

这篇关于yo!这里是函数声明与函数定义在开发环境中的用途的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/246140

相关文章

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C++中::SHCreateDirectoryEx函数使用方法

《C++中::SHCreateDirectoryEx函数使用方法》::SHCreateDirectoryEx用于创建多级目录,类似于mkdir-p命令,本文主要介绍了C++中::SHCreateDir... 目录1. 函数原型与依赖项2. 基本使用示例示例 1:创建单层目录示例 2:创建多级目录3. 关键注

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

kotlin的函数forEach示例详解

《kotlin的函数forEach示例详解》在Kotlin中,forEach是一个高阶函数,用于遍历集合中的每个元素并对其执行指定的操作,它的核心特点是简洁、函数式,适用于需要遍历集合且无需返回值的场... 目录一、基本用法1️⃣ 遍历集合2️⃣ 遍历数组3️⃣ 遍历 Map二、与 for 循环的区别三、高

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并