宏的定义及常见使用方式

一、宏的定义

宏(Macro),是一种批量处理的称谓。计算机科学里的宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式。解释器或编译器在遇到宏时会自动进行这一模式替换。

定义形式

#define 宏名 字符串

1)#表示这是一条预处理命令,所有的预处理命令都以 # 开头。宏名是标识符的一种,命名规则和变量相同。字符串可以是数字、表达式、if语句、函数等。
2)这里所说的字符串是一般意义上的字符序列,不要和C语言中的字符串等同,它不需要双引号。
3)程序中反复使用的表达式就可以使用宏定义
注意:宏只做替换、不做运算

二、#的使用

显示出宏定义的参数

#define PRINT_SQR(x) print("The square of "#x" is %d.\n, ((x)*(x)))

int y = 5;
PRINT_SQR(y);  //The square of y is 25

三、##的使用(粘合剂)

连接符,将两个宏参数连接在一起。

#define VAR_EXT(x) var##x
int var1 = 10;
int var2 = 20;
printf("%d\n", VAR_EXT(1));  //printf("%d\n",var1);    10

四、条件编译

常用用法:处理文件重复包含;区分不同版本代码

//Test.h
#ifndef _TEST_H_
#define _TEST_H_
 
#include "test2.h"
#include "test3.h"
#include "test4.h"
 
#endif

注释代码块

#if 0
/*注释在这里*/ 一会要编译,一会不想编译的代码。
#endif

五、#include <stdio.h> 与 #include “stdio.h” 区别

#include "stdio.h" 
当要调用某个函数时 先在用户自已编写的文件中查找,如果找不到再到库文件里去找, 
 
 
#include <stdio.h> 
是直接到库文件里去找 
所以如果是调用自己写的函数的话就用#include "stdio.h",这种形式 
而调用标准库函数的话就用#include <stdio.h>这种形式,可以提高速度

六、常用调试宏

__FILE__: 所在文件名
 
__FUNCTION__:所在函数名
 
__LINE__:所在行数
 
__DATE__:执行日期
 
__TIME__:执行时间
头文件:
//#define DEBUG
#ifdef DEBUG
#define dbg_print(format,args...) printf(format, ##args)
#else
#define dbg_print(format,args...) do{} while(0)
#endif

C文件:
void some_func(void)
{
dbg_print("Program is compiled on %s %s", __DATE__, __TIME__);
dbg_print("function %s() in file %s line %d get problem\n", __FUNCTION__, __FILE__, __LINE__);
....
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值