宏定义是写在.h文件里还是.c文件里
宏定义是写在.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文件里相关推荐
- c语言里宏定义算变量嘛,C语言宏定义的一些总结
较大的C语言项目都会用大量的宏定义来组织代码,比较经典的代码就是Linux Kernel的头文件中用的宏定义.看起来宏展开就是做个替换而已,其实里面有比较复杂的规则,有关宏展开的语法规则此小结力图整理 ...
- C语言的头文件和宏定义详解
头文件 头文件,顾名思义就是定义在C语言文件头部的那一坨东西 #include <stdio.h> 这就是一个标准输入输出的头文件声明,头文件声明写在定义文件(后缀名.c的文件)的头部,并 ...
- VC预处理指令与宏定义的妙用
VC中预处理指令与宏定义的妙用 刚接触到MFC编程的人往往会被MFC 向导生成的各种宏定义和预处理指令所吓倒,但是预处理和宏定义又是C语言的一个强大工具.使用它们可以进行简单的源代码控制,版本控制,预 ...
- c语言 宏do while,关于C语言宏定义 使用do{ xxxx }while()
暂时感觉像是由于":"的原因,关于使用习惯方面的问题!! 下面是copy的: 这样的宏见过么: Cpp代码 #define FOO(x) do {\ some_code_line_ ...
- 宏定义、define、defined、ifdef、ifndef、undef总结
define.defined.ifdef.ifndef.undef的用法都属于预处理部分,所谓预处理是指在进行第一遍扫描(语法扫描和语法分析)之前所做的工作.当对一个源文件进行编译时,系统将自动引用预 ...
- 宏定义中的 ## ... __VA_ARGS__
宏定义中的##操作符和... and _ _VA_ARGS_ _ 1.Preprocessor Glue: The ## Operator 预处理连接符:##操作符 Like the # operat ...
- C语言宏定义#define
宏定义是高级语言编译器提供的常用语法,其目的是利用某一标识符标识某个文本字符串.在编写程序时,如果程序中反复地使用某个数据或某段程序片段,就可以考虑将这个数据或程序片段定义为宏,然后每个出现 ...
- linux gcc 宏定义 __GNUC__ __GNUC_MINOR__ 版本区分
今天在看Linux系统编程这本书的代码的时候看到了__GNUC__,不太清楚这个宏所以去查了一下,以此记录.GNU C预定义了一系列的宏,这些宏都是以双下划线开始的,这里只讲一下__GNUC__ _ ...
- 单片机\程序中的那些宏定义
1.字符串的数据长度,用sizeof求数据长度并用宏定义表示 uint8_t buf[]="Hello,I am STM32\r\n"; 求字符串数组buf的数据长度: uint ...
最新文章
- R语言使用ggplot2包使用geom_boxplot函数绘制基础分组水平箱图(boxplot)实战
- python各种文件数据的读取
- 差分能量分析介绍(四)
- 【Vue Laravel-mix】Error with Vue lazy loading components: “Failed to resolve async component“
- linux内核线性地址等于物理地址,Linux 从虚拟地址到物理地址
- Java应用CPU问题排查
- 牛客挑战赛53G-同源数组(Easy Version)【NTT】
- Python第三方库使用感言
- mysql客户sqlyog_MySQL客户端工具 SQLyog
- 射频微波天线知识点整理
- linux exclude用法,rsync的include和exclude用法
- tf.matmul()
- 图解网络TCP/IP
- 如影智能唐沐:别把智能家居做成极客玩具
- [网络篇]ESP8266-SDK教程(三)之TCP通信Server-Client
- InjectFix原理学习(实现修复加法的热更)
- CINTA作业七:同态
- 冒险岛2服务器位置,跨区冒险
- 树莓派/继电器DIY朴素的远程空调遥控器
- git 记住账号密码