宏定义是写在.h文件里还是.c文件里?

1.不管是定义在.h文件还会.c文件,程序都会正常运行。

2.如果.h中不需要用到的宏,都定义到.c里,因为等一个工程里需要include多个.h的时候,你在.h里定

义很多宏不方便,因为你一定不能重复定义。但是定义在.c里就不要紧了。

3.如果写的宏想要提供给别的程序调用,那么写到.h里面,如果只是在本文件中使用,那么就写到.c里面

4.极少会写在 *.c 文件中的,绝大多数是写在 *.h 中,因为.c文件要包含 h 文件的.
  头文件里加上
  #ifndef XXXXXXX
  #define XXXXXXX
  #endif
  的只包含一次保护.我们#define 的东西就不怕会重复包含了.

5.一定 或可能被多个c文件用到的宏定义,一般都放在头文件中(.h);

如果肯定就被一个文件所用,放在.c 或.h里面都可以。

转载于:https://www.cnblogs.com/wufengv5/archive/2013/05/19/3086868.html

宏定义是写在.h文件里还是.c文件里相关推荐

  1. c语言里宏定义算变量嘛,C语言宏定义的一些总结

    较大的C语言项目都会用大量的宏定义来组织代码,比较经典的代码就是Linux Kernel的头文件中用的宏定义.看起来宏展开就是做个替换而已,其实里面有比较复杂的规则,有关宏展开的语法规则此小结力图整理 ...

  2. C语言的头文件和宏定义详解

    头文件 头文件,顾名思义就是定义在C语言文件头部的那一坨东西 #include <stdio.h> 这就是一个标准输入输出的头文件声明,头文件声明写在定义文件(后缀名.c的文件)的头部,并 ...

  3. VC预处理指令与宏定义的妙用

    VC中预处理指令与宏定义的妙用 刚接触到MFC编程的人往往会被MFC 向导生成的各种宏定义和预处理指令所吓倒,但是预处理和宏定义又是C语言的一个强大工具.使用它们可以进行简单的源代码控制,版本控制,预 ...

  4. c语言 宏do while,关于C语言宏定义 使用do{ xxxx }while()

    暂时感觉像是由于":"的原因,关于使用习惯方面的问题!! 下面是copy的: 这样的宏见过么: Cpp代码 #define FOO(x) do {\ some_code_line_ ...

  5. 宏定义、define、defined、ifdef、ifndef、undef总结

    define.defined.ifdef.ifndef.undef的用法都属于预处理部分,所谓预处理是指在进行第一遍扫描(语法扫描和语法分析)之前所做的工作.当对一个源文件进行编译时,系统将自动引用预 ...

  6. 宏定义中的 ## ... __VA_ARGS__

    宏定义中的##操作符和... and _ _VA_ARGS_ _ 1.Preprocessor Glue: The ## Operator 预处理连接符:##操作符 Like the # operat ...

  7. C语言宏定义#define

         宏定义是高级语言编译器提供的常用语法,其目的是利用某一标识符标识某个文本字符串.在编写程序时,如果程序中反复地使用某个数据或某段程序片段,就可以考虑将这个数据或程序片段定义为宏,然后每个出现 ...

  8. linux gcc 宏定义 __GNUC__ __GNUC_MINOR__ 版本区分

    今天在看Linux系统编程这本书的代码的时候看到了__GNUC__,不太清楚这个宏所以去查了一下,以此记录.GNU C预定义了一系列的宏,这些宏都是以双下划线开始的,这里只讲一下__GNUC__  _ ...

  9. 单片机\程序中的那些宏定义

    1.字符串的数据长度,用sizeof求数据长度并用宏定义表示 uint8_t  buf[]="Hello,I am STM32\r\n"; 求字符串数组buf的数据长度: uint ...

最新文章

  1. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组水平箱图(boxplot)实战
  2. python各种文件数据的读取
  3. 差分能量分析介绍(四)
  4. 【Vue Laravel-mix】Error with Vue lazy loading components: “Failed to resolve async component“
  5. linux内核线性地址等于物理地址,Linux 从虚拟地址到物理地址
  6. Java应用CPU问题排查
  7. 牛客挑战赛53G-同源数组(Easy Version)【NTT】
  8. Python第三方库使用感言
  9. mysql客户sqlyog_MySQL客户端工具 SQLyog
  10. 射频微波天线知识点整理
  11. linux exclude用法,rsync的include和exclude用法
  12. tf.matmul()
  13. 图解网络TCP/IP
  14. 如影智能唐沐:别把智能家居做成极客玩具
  15. [网络篇]ESP8266-SDK教程(三)之TCP通信Server-Client
  16. InjectFix原理学习(实现修复加法的热更)
  17. CINTA作业七:同态
  18. 冒险岛2服务器位置,跨区冒险
  19. 树莓派/继电器DIY朴素的远程空调遥控器
  20. git 记住账号密码

热门文章

  1. storm之topology的启动
  2. silverlight 加载大图片进度提示
  3. 同一用户最新登录踢掉历史登录【原创】
  4. jsp网页实现自动刷新和自动跳转页面
  5. k8s一个容器多个镜像_从零开始学K8s: 6.运行一个简单的容器
  6. lda进行图片分类_利用CNN对股票“图片”进行涨跌分类——一次尝试
  7. 用react和electron实现文件树组件(上)
  8. (108)FPGA面试题-介绍STA静态时序分析及其作用
  9. (41)System Verilog输出变量时序延迟
  10. Xilinx FIFO IP核使用