1,C语言里面怎样将自己定义的函数加到头文件以后调用的时候直接包头文件有两种 , 一种是系统的 , 一种是自己写的,如果你想把你写的方法放到系统的头文件里面是不可以的你只能自己写一个头文件,里面有你的方法,你写程序的时候加上#include “XXX.h”要的 。因为不发头文件的话,计算机不认识那个自定义函数 。在需要的头文件的前面 #include "头文件名.h"吧你好!你最好把那个工程的文件夹都发过去 。头文件也是类似于文本的东西 。所谓的把函数加到头文件里就是在那个文本里写这个函数就行,和在CPP文件里写一样的 。你用的是VC么?用个编程工具写呗我的回答你还满意吗~~【把函数写在头文件中,C语言里面怎样将自己定义的函数加到头文件以后调用的时候直接包】
2,函数实现代码可以写在头文件中吗对于小的简单程序来说 , 完全可以不要cpp,除了main所在的cpp,但是很多情况下cpp是更好的选择或者说是必须的我举几个例子:1. 当你的项目很大,如果全部都写到h里 , 则每次改动和编译都需要全部编译,往往大部分代码不需要重新编译 , 若写到cpp里编译成库,则改动后可以尽可能少编译2. 当然,大的项目需要结构清晰,h里放数据结构以及接口定义而不用管实现 , 往往有利于阅读和维护,就像别人只需要知道你是做什么的,至于如何做到大可不用关心3. 有种情况似乎更需要把实现分开,比如两个h定义了两个class,它们都相互引用对方,则至少其中一个会用到非完整类型 , 即只有声明没有定义的类型,试想编译器在不知道完整类型的情况下是不知道如何生成代码的 , 所以写到cpp里才可以解决 。这个例子有点难懂,但遇到的时候就会明白了
3,C语言中怎么把自写的函数做成头文件方便下次使用my_push.h 写法:#ifndef __MY_PUSH_H__#define __MY_PUSH_H__声明,例如 你定的结构 。。。你定的函数 声明和定义:void create_stack(void)void my_push(..)#endif __MY_PUSH_H__头尾的宏,多文件时 , 保证它只include 1次你的先弄明白头文件被包含了之后,编译器会在当前文件把你包含的头文件展开 , 而当多于两个源文件包含相同的头文件的时候,如果不加staic的话,头文件中的同一个函数就相当于在整个程序中被定义了多次,所以肯定会报错 。static会把它定义为本地函数,将其作用域限制在本文件内,所以需要加上static关键字 。如果不加static的话,可以用宏定义的方式实现的,然后在每个文件中使用#ifdef和#ifndef以及#endif~
4,怎么将自己写好的函数放到头文件里你可以创建头文件,头文件是以".h"结尾的文件名,而main()函数所在的文件则是以".c"结尾的,".c"后缀的文件内部,也就是main函数内部主要是调用各个功能函数,函数的声明部分一般放在在".h"后缀的头文件中,这样是为了实现C语言的结构化,创建好了头文件 , 就可以在头文件内部实现各个函数的声明,具体的一个完整的函数声明可以用下面的加法函数例子来说明 ://include<add.h>,头文件名为add的头文件float add(float x,float y)/*定义add函数*/{float z;z=x+y;return(z);}这个函数的返回值是float(浮点型或是实型),add为函数名,调用的形参都是float类型 , 数目为两个形参x,y 。x,y是接受main()函数中的实参传过来的具体值,然后进行运算 。main函数调用只要这样就可以:#include<stdio.h>#include<add.h>main(){float c;c=add(4.6,5.4);printf("x+y=%d",c);}5,函数实现代码可以写在头文件中吗可以 但必须要有一个.cpp文件做主程序对于小的简单程序来说,完全可以不要cpp,除了main所在的cpp,但是很多情况下cpp是更好的选择或者说是必须的我举几个例子:1. 当你的项目很大,如果全部都写到h里,则每次改动和编译都需要全部编译,往往大部分代码不需要重新编译,若写到cpp里编译成库,则改动后可以尽可能少编译2. 当然,大的项目需要结构清晰,h里放数据结构以及接口定义而不用管实现,往往有利于阅读和维护,就像别人只需要知道你是做什么的,至于如何做到大可不用关心3. 有种情况似乎更需要把实现分开,比如两个h定义了两个class , 它们都相互引用对方,则至少其中一个会用到非完整类型,即只有声明没有定义的类型,试想编译器在不知道完整类型的情况下是不知道如何生成代码的,所以写到cpp里才可以解决 。这个例子有点难懂,但遇到的时候就会明白了一般来说头文件是用来声明,cpp是实现 , 如果什么没变,实现变了,依赖这个类的地方就不用重新编译了 。还有如果是声明和定义都写在一起,编译器默认认为它是inline,生成的2进制代码比较多可以的 , 可以将类声明和定义都完整实现写在头文件里 。
推荐阅读
- 线上+线下 衡阳三代社保卡申领方式
- redisson超时 redis指定键超时监听
- jmeter与redis
- redis集群模式 redis集群添加集群
- redis异步入库 redis异步更新数据库
- 怎么清除redis缓存数据 redis怎么清除数据
- redis数据强一致性 redis强一致吗
- redis可以用来 redis能存哪些类型
- 如何设置戴尔服务器的代理? 戴尔服务器怎么代理
- 启动和关闭hadoop集群的方法 启动和关闭mongodb