C 头文件、宏、编译问题

@2019-02-15

【小记】

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

原因:

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

防重包含机制:

  #pragma once

  #ifndef _MACRO_  #define _MACRO_  #endif

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

> 宏具有隐蔽性、最新性

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

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

使用场景:

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

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

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

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

猜你喜欢

转载自www.cnblogs.com/skullboyer/p/10382835.html
今日推荐