zoukankan      html  css  js  c++  java
  • C 头文件、宏、编译问题

    @2019-02-15

    【小记】

    > C 头文件的防重复包含是针对同一个源文件而言

    原因:

      #include 头文件就是一段代码的拷贝,头文件中若有类型定义等,重复包含就会造成编译错误,若无类型定义等不造成重复定义的,则无需防重复包含机制

    防重包含机制:

      #pragma once

      #ifndef _MACRO_  #define _MACRO_  #endif

    > 在头文件中不要定义变量、函数等是为了解决被多个源文件包含时出现重复定义

    > 宏具有隐蔽性、最新性

      在不同源文件中定义同名宏,不会出现任何问题

      在同一源文件中多次定义同名宏,则宏为最后一次定义的值

    使用场景:

      公共头文件中依据宏值或宏定义不同,而对应不同的执行语句,则在不同源文件中包含该公共头文件,根据需要定义不同的宏使用相应的执行语句

      使用案例:rt-thread中文件 <rtdbg.h> ,详见其开头说明部分

    > 同一源文件中多次定义同名变量无错误,但只允许初始化一次

    > 不同源文件中不允许定义同名变量

  • 相关阅读:
    AT2165 Median Pyramid Hard
    AT2160 へんなコンパス / Manhattan Compass
    bzoj2863:愤怒的元首
    bzoj5336:[TJOI2018]party
    [luoguP3768]简单的数学题
    bzoj1831:[AHOI2008]逆序对
    bzoj5492:[Hnoi2019]校园旅行
    HNOI2019游记
    HDU 1102 Constructing Roads(kruskal)
    HDU 1059 Dividing
  • 原文地址:https://www.cnblogs.com/skullboyer/p/10382835.html
Copyright © 2011-2022 走看看