.c 文件 和 .h 文件分别做了什么事? c

  1. 链接的时候,把项目中所有相关联的.o目标文件和C语言函数库合并在一起,生成可执行文件;
  2. 函数的定义放在.c文件,函数的声明放在.h文件;
  3. 如果要使用某个.c文件中定义的函数,只需要#inclued这个.c文件对应的.h文件;
  4. .h文件的作用:被别人拷贝,编译链接的时候不需要管.h文件
  5. 其他注意事项:\n是一个转义字符;\t 是tab键;printf函数默认的返回值类型是int类型;它返回的字符窜常亮的字符数,并不是字数;1个汉字占到3个字符;
  6. 自己理解.h和.c文件,.h文件也叫头文件,主要作用是声明函数作用的。如果是系统自带的函数库,只要在自己的开发程序中引入了这个头文件,那么在编译的时候可以通过,因为编译只会检查语法错误,不会报错,但是有警告;只要在链接的时候,你的程序才会与引入的函数的定义相连接;这时候才能执行程序成功;一个是函数的声明,一个是函数的定义;我们把函数的声明放在.h文件中,把函数的定义放在.c文件中;
  7. 声明是声明它有什么方法,不具体实现;定义是定义它具体有什么功能,把这个功能开发出来给别人用;
时间: 2024-10-13 17:37:01

.c 文件 和 .h 文件分别做了什么事? c的相关文章

C中的C文件与h文件辨析

简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:       1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件) 4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息.(生成.exe文件) 编译器在编译时是以C文件为单位

语言中.C文件和.H文件的概念和联系

//a.h void foo(); //a.c #include "a.h" //我的问题出来了:这句话是要,还是不要? void foo() { return; } //main.c #include "a.h" int main(int argc, char *argv[]) { foo(); return 0; } 今天看到这个问题,很有意思,记录下来复习有些遗忘的知识点. 先说答案,这句话是必须要的! 如果 a.c 中不写,那么编译器是不是会自动把 .h 文

ios的属性和成员变量在.h文件和.m文件的不同

今天被一个最近在学ios的同事问了一个问题:属性写在.h文件中和在.m文件中有什么区别?当时错愣了一下,隐约记得似乎有区别的,但是想不起来,根据自己的经验告诉他,说没区别,结果找了资料发现自己错了,好尴尬,把这些基础的给忘了. 属性在.h文件中和在.m中声明是有区别的.区别就是,在.h文件中声明的属性,外部类可以通过"类实例.属性"来调用,但在.m中声明的则不可以,获取和设置的方法,只能是通过setValue:forKey和valueForKey来实现. 成员变量,有三种权限,就是大家

iOS的属性和成员变量在.h文件和.m文件中的不同

在.h文件中声明的属性可以通过点语法访问,而在.m文件中声明的属性只能通过setValue:forKey和valueForKey设置和获取 成员变量,有三种权限,就是大家都知道的@private.@protected.@public ,写在.m文件中时,相当于是@private权限,子类无法访问,验证了一下,做权限修改也无效.而写在.h文件中,默认是@protected权限,子类可以访问,可以做权限修改.因为访问权限指针对.h文件..h文件中成员变量,外部类对其的调用,跟C++一样,用->来调用

Objective-C - 属性和成员变量在.h文件和.m文件区别

属性和成员变量在.h文件和.m文件区别 属性在.h文件中和在.m中声明是有区别的.区别就是: 在.h文件中声明的属性,外部类可以通过"类实例.属性"来调用, 但在.m中声明的则不可以,获取和设置的方法,只能是通过setValue:forKey和valueForKey来实现. 成员变量,有三种权限,就是大家都知道的@private.@protected.@public ,写在.m文件中时,相当于是@private权限,子类无法访问,验证了一下,做权限修改也无效.而写在.h文件中,默认是@

javah 生成.h文件时出现的错误

javah 時出現错误: 无法访问android.app.Activity,找不到android.app.Activity的类文件   "Run TestJni1" 或 "Debug TestJni1" 后,"D:\workspace\testjni1\bin\classes\com\example\testjni1" 目錄下會產生很多 *.class 文件,對其中的 "MainActivity.class" 進行如下操作,據

6.文件类型和文件权限管理

6.1.普通文件 (1)普通文件(- regular file)包括文本文件+二进制文件. (2)文本文件即文件中的内容是由文本构成的,文本即经过某种编码的字符(譬如ASCII码字符):所有文件的内容本质上都是数字,而文本文件中的数字本身应理解为该数字所对应的编码字符(譬如ASCII码对应的字符):常见的.c文件和.h文件和.txt文件等都是文本文件:文本文件的好处是可以被人轻松读懂和编辑,则文本文件天生就是为人类发明的. (3)二进制文件即文件中存储的内容本质上也是数字,但这些数字并非字符对应

编译过程中,termcap.h 文件找不到路径 licli.a终于生成

编译过程中,termcap.h      文件找不到路径 查看是linux  源码下找不到termcap.h文件 安装了所有关于*cap*的源码包也不起作用 今天终于解决了这个问题,搜termcap.h  发现一篇文章,如下 ----------------------------------------------------------------------------------------- 安装minicom2.3出现termcap.h错误解决方法 2010-05-06 17:12:

emmintrin.h文件解析

 Welcome to CSU Online Judge! 1112: 机器人的指令 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 274  Solved: 97 [Submit][Status][Web Board] Description 数轴原点有一个机器人.该机器人将执行一系列指令,你的任务是预测所有指令执行完毕之后它的位置. ·LEFT:往左移动一个单位 ·RIGHT: 往右移动一个单位 ·SAME AS i: 和第i 条执行相同的