zoukankan      html  css  js  c++  java
  • 头文件,库文件,重复包含

    //a.c
    
    #include <stdio.h>
    #include "a.h"
    #include "b.h"
    void main(void)
    {
    printf("safadf %d",i);
    }
    //a.c end
    //a.h
    #include "b.h"
    //a.h end
    //b.h
    int i = 3;
    //b.h end
    /*本例中主程序在a.c中定义。
    正常情况下,这三个文件都在同一目录下,进入该目录,然后执行
    cc -c a.c表示编译a.c文件,编译的时候会把头文件中的内容都加载进来,在此例中,#include "a.h",而a.h中同样存在include,这时,a.h先把b.h中的内容:int i =3;加载进来,然后a.c在把a.h中的内容加载进来,所以a.c文件中的#include a.h最终被替换为为int i=3;等把全部的头文件加载进来以后,然后生成二进制格式的文件,这就是编译的过程。
    编译过后本目录下就会出现a.o这个二进制文件,然后用命令cc -o a a.o
    生成最终的可执行文件a,
    */
    
    /*此例中,当执行cc -c a.c时,将所有的头文件都加载进来,主程序将变为
    int i = 3;
    int i = 3;
    void main(void)
    {
    printf("safadf %d",i);
    }
    显然,i被重复定义了,所以编译会报错
    */
  • 相关阅读:
    正则表达式
    字典
    列表 元组
    int 和 str bool 类型 基本数据类型
    循环体的主要内容
    变量与循环体
    第12课.内存控制器与SDRAM
    第11课.串口(UART)的使用
    第10课.掌握ARM芯片时钟体系
    第9课.gcc和arm-linux-gcc和Makefile
  • 原文地址:https://www.cnblogs.com/saolv/p/9607302.html
Copyright © 2011-2022 走看看