zoukankan      html  css  js  c++  java
  • 正确使用c语言中的头文件

    我们在使用c编程的时候经常会遇到头文件,前段时间我自己做了个小项目的时候,也遇到了关于头文件的问题。

    预处理器发现#include 指令后,就会寻找后跟的文件名并把这个文件包含的内容包含到当前文件中。被包含文件的文本将替换源文件中的#include 指令,就像您把被包含文件中的全部内容键入到源文件的特定位置一样(摘抄自 cprimer plus)。简单来说就是,编译器把 #include 后跟随的文件内容都写到源文件中,写的位置就是 #include放的位置。

    #include指令有两种形式

    1#include<stdio.h>  文件名放在尖括号里面

    unix系统中,尖括号告诉预处理器在一个活多个标准的目录中寻找文件。如果做开发,比如,我使用keilmdk,编译器也遵循这样的原则,放在默认目录中,不用人工处理。

    2#includemystuff.h 文件名放在双引号中

    有两种形式:

    <1>:#includehot.h收索当前的工作目录

     <2>:#include/usr/biff/p.h收索/usr/biff所在的目录

    对于unix系统,使用双引号意味着先搜索本地目录,但是具体收索那个牡蛎依赖于编译器。有些编译器收索源代码所在的目录,还有些收索工程文件所在的目录。

    对于我使用的mdk,我是将文件所在的文件夹添加到工程能够搜索的目录中。

    在写c程序的时候,我们经常会把函数写在一个.c文件中,然后在另外的.c文件中引用函数,使得整个程序更加整洁,方便。

    但是在头文件使用的时候经常出现重定义的错误,我使用的解决办法是:

    首先把hello.c拆分为两个文件hello.chello.hhello.h中包含hello.c所需要的头文件和.c中出现的函数名。例如在hello.c中有

    void add int x,int y

    {

    z=x+y;

    return y;

    }

    就在hello.h中添加 void add(int x,int y);hello.c所需的头文件#include<stdio.h>

    在拆分后的hello.c添加#includehello.h,然后把hello.chello.h放在同一个文件夹即可。当有文件需要add函数时直接在头文件中添加#includehello.h即可。

    当多个文件引用hello.h时候,例如当plus.c中引用hello.cjump.c需要使用plus.cadd.c。就会出现重定义的错误(引用hello.cplusz指将hello.hplus.h头文件添加到jump.c中)

    这时候就引用防重定义。假设要放重引用hello.h  在开头添加

    #ifndef __HELLO_H__

    #define __HELLO_H__

    结尾添加

    #endif

    既把你要重定义的文件的开头添加

    #ifndef __HELLO_H__

    #define __HELLO_H__

    HELLO就是你文件的名字改成大写 H就是你文件类型

    再在结尾加上

    #endif

    即可。

  • 相关阅读:
    PAT《数据结构学习与实验指导》实验项目集 2-09 2-10 2-11 2-12 2-13
    codeblocks+Mingw 下配置开源c++单元测试工具 google test
    编程之美 1.16 24点游戏
    PAT 1065 1066 1067 1068
    多线程批量执行等待全部结果
    使用Git和远程代码库
    CentOS下Crontab安装使用详细说明(转)
    安装和测试Kafka(转)
    MapReduce任务参数调优(转)
    Maven构建应用程序常用配置(转)
  • 原文地址:https://www.cnblogs.com/notepi/p/3174197.html
Copyright © 2011-2022 走看看