一、头文件
    头文件可能会被任意源文件包含,意味着头文件中的内容可能会在多个目标文件中存在,要保证合并时不要冲突
    重点:头文件只编写声明语句,不能有定义语句
   
    1、头文件应该写什么
        a.全局变量声明
        b.函数声明
        c.宏常量、宏函数
        d.类型重定义  //typedef
        e.结构体、枚举、联合等类型设计声明
    2、头文件的编写规则
        1.为每个.c文件写一份.h文件,.h文件是对它对应的.c文件的说明
        2.如果需要用到某个.c文件中的变量、函数、宏时,只需要把该文件的.h文件导入即可
        3. .c文件也要导入自己的.h文件,目的时为了让定义与声明保持一致
        头文件的相互包含:
            假如a.h包含了b.h的内容,而b.h中又包含了a.h的内容,这时就会产生头文件的互相包含,无法编译通过
            解决办法:把a.h中需要的b.h的内容,和b.h中需要a.h的内容提取出来,额外再写一个c.h
    3、Makefile:
        是由一条条编译器指令组成的可执行文件,叫做编译脚本
        在终端执行 make 命令就会自动执行Makefile脚本中的编译指令,它可以根据文件的修改时间和依赖关系来判断哪些文件需要编译
        需要一个名字叫做 Mikefile 的编译文件
        Makefile的编译规则:
            1.如果这个工程没有编译过,那么我们的所有.c文件都要编译并被链接
            2.如果这个工程的某几个.c文件被修改,那么我们只编译被修改的.c文件,并链接目标程序
            3.如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的.c文件,并链接目标程序
        一个最简单的Makefile脚本格式:
        执行文件:依赖
            编译指令
        被依赖的目标1:依赖的文件
            编译指令
        被依赖的目标2:依赖的文件
            编译指令
            ...

Linux & 标准C语言学习 <DAY14>的更多相关文章

  1. Unix和Linux下C语言学习指南

    转自:http://www.linuxdiyf.com/viewarticle.php?id=174074 Unix和Linux下C语言学习指南 引言 尽管 C 语言问世已近 30 年,但它的魅力仍未 ...

  2. linux 下C语言学习路线

    UNIX/Linux下C语言的学习路线.一.工具篇“公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工 ...

  3. UNIX/Linux下C语言的学习路线

    一.工具篇 “公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工具. 1.操作系统    在UNIX或 ...

  4. C语言学习008:标准错误

    在上一节中的数据文件中(C语言学习007:重定向标准输入和输出),如果文件中的数据包含非法数据,如何让程序显示一条错误的提示消息呢?就需要用到标准错误 #include <stdio.h> ...

  5. Linux下C语言编程基础学习记录

    VIM的基本使用  LINUX下C语言编程 用gcc命令编译运行C语言文件 预处理阶段:将*.c文件转化为*.i预处理过的C程序. 编译阶段:将*.i文件编译为汇编代码*.s文件. 汇编阶段:将*.s ...

  6. 实验四 Linux系统C语言开发环境学习

    项目 内容 这个作业属于哪个课程 Linux系统与应用 这个作业的要求在哪里 作业要求链接 学号-姓名 17041428-朱槐健 作业学习目标 1.Linux系统下C语言开发环境搭建 2.学习Linu ...

  7. 【C语言学习】《C Primer Plus》第1章 概览

    学习总结 1.C语言于1972年由贝尔实验室的Dennis Ritchie在与Ken Thompson一起设计UNIX操作系统的时候开发的.的的设计构想来源于Ken Thompson的B语言.Anyw ...

  8. LINUX下C语言编程基础

    实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...

  9. 郝斌老师C语言学习笔记(一)

    在给变量分配内存时,很可能这段内存存在以前其他程序使用留下的值.当使用VC编译器,若编译器发现没有给变量赋值而使用,就会返回一个以“85”开头的很大的数字(此时该段内存中为一个垃圾数,为了避免出现较常 ...

  10. 【转】朱兆祺教你如何攻破C语言学习、笔试与机试的难点(连载)

    原文网址:http://bbs.elecfans.com/jishu_354666_1_1.html 再过1个月又是一年应届毕业生应聘的高峰期了,为了方便应届毕业生应聘,笔者将大学四年C语言知识及去年 ...

随机推荐

  1. heap 算法函数

    这一系列函数是在做 这道题 时发现的 这道题空间卡的很死,是不能用数组存下所有数字进行快排的 后来又尝试用 \(multiset\) 优化空间,发现不行,可能是 \(multiset\) 还有结构性存 ...

  2. UF_OBJ_delete_array_of_objects函数vector转数组用法

        1 UF_initialize(); 2 std::vector<tag_t>tool_tag; 3 tag_t ObjectTag = NULL_TAG; 4 int Type, ...

  3. [2007年NOIP普及组] 纪念品分组

    元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作.为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不 ...

  4. hdu4585 Treap与名次树/STL map(C/C++)

    hdu4585 题目地址:https://acm.dingbacode.com/showproblem.php?pid=4585 Shaolin Time Limit: 3000/1000 MS (J ...

  5. mongodb---docker

    docker pull mongo docker run --name mongodb -p 27017:27017 -v /mydata/mongodb/data:/data/db -d mongo ...

  6. Linux deploy 32位系统 怎么安装宝塔怎么安装linux系统安装宝塔后搭建网站

    getconf LONG_BIT 获取当前linux系统位数

  7. Java jsp视频标签

    视频标签: 直接显示 <embed src="视频地址.mp4" width="60" height="40"> 按钮点击 &l ...

  8. css3各种度量单位 px、em、%、rem、vh/vw、vmin/vmax

    一 px 相对长度单位,浏览器的度量单位,相对于物理像素(显示器屏幕分辨率),1px在高清屏幕下可能占用2个物理像素.甚至3个物理像素,有关物理像素和px之间转换比,可以查看这篇文章. 二 em 相对 ...

  9. 划分数据集时出现PermissionError: [Errno 13] Permission denied:

    PermissionError: [Errno 13] Permission denied: [errno 13]权限被拒绝 错误的原因可能是文件找不到,或者被占用,或者无权限访问,或者打开的不是文件 ...

  10. little bug

    1 python script can be run in shell console while not in calling shell scripts wfile = codecs.open(n ...