zoukankan      html  css  js  c++  java
  • 1、C语言外部说明(变量及函数的作用域扩充)

    C语言外部说明(变量及函数的作用域扩充)

    C习惯编程方式:在.c文件中定义,同名.h文件中声明,需要使用时.c中的程序时,#include 同名.h文件就可以。

    注:(同名中只是为了程序逻辑清晰,不同名的.c和.h文件也是一样的。)

    C编译方式:只同时编译.c文件,不会编译.h文件,所以如果需要.h文件的编译,只能包含在.c文件当中去。

    C外部变量的查找方式:在本项目或工程中的所有文件中去查找。所以理论上不应该存在

    同名的外部变量。

    一、.h文件之间全局变量的扩充

    .h文件之间全局变量的扩充,一般使用#include(因为如果使用extern 在使用这个

    头文件时,那个定义所在的头文件必须直接或间接#include在.c文件中,才能编译这个定义

    所在的头文件,那样才能找到这个外部变量的定义),直接使用在头文件中使用include的方

    式就是使用间接的方式去包含,如果在.c文件中包含了这个.h文件,那么在这个.h文件也包含了它需要使用的外部变量定义所在的.h文件,一样会进行编译.



    出现错误:

    两种解决办法:

    1、 在t2.h文件中直接 #include “fun.h” 而不是用extern int B;

    2、 直接在main.c文件中包含#include “fun.h”,而不通过t2.h文件(t2.h没有任何关于fun.h文件中的任何信息)

    二、.c 和.h文件之间全局变量的扩充

    如果是同名的:一般只使用extern(在.h文件中使用)

    如果是非同名的:一般使用#include 与另一个.c文件同名的.h文件

    理论上这两种方法可以交替使用。

    但是如上所说,同名只是为了程序的清晰可读性。

    三、.c文件之间,一般使用通过包含与.c同名的.h文件(配合二中的方法)

    这里包含的同名.h文件,只是为了程序清晰才在同名的.h文件中去声明.c文件中的外部变

    量和函数,其实不同名的.h文件也完全可以做到这点,但是会显得混乱。

    或者使用extern .

    注:同名的.c文件之间不能使用#include 会生成多个目标文件中含有同一个变量,在进行

    程序链接时会出错。

    实际编程中:绝大部分的声明全部放在.h文件中,绝大部分的定义全部放在.c文件中。

    .h文件主要是为了.c的独立性,以及为.c文件提供通道。

  • 相关阅读:
    leetcode59
    leetcode95
    leetcode96
    leetcode787
    leetcode150
    leetcode165
    leetcode739
    快速搭建:Djangorest-framework的restful项目
    编写部署用到的部分shell脚本收集
    pandas:dataframe删除某些不为non的行
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3122889.html
Copyright © 2011-2022 走看看