美文网首页
C++ 宏定义

C++ 宏定义

作者: In_Sun | 来源:发表于2018-03-15 23:12 被阅读0次

define 中的三个特殊的符号

  1. #define Conn(x,y) x##y
## 表示x连接y
int n = Conn(123,456); // 结果就是 n = 123456
char *str = Conn("abc","def"); // 结果就是 str = "abcdef" 
  1. #define ToChar(x) #@x
#@ 给目标加上单引号
char a = ToChar(1); // a = '1'
  1. #define ToString #x
## 给目标加上双引号
char *str = ToString(123); // str = "123";

常用的宏定义

// macro.h
#ifndef MACRO_H
#define MACRO_H

// 获取指针指向的第一个字节
#define MEM_B(x) (*((*byte)(x)))  
// 获取指针指向的前两个字节
#define MEM_W(x) (*((*word)(x)))  

// 得到一个field在一个struct中的偏移量
#define OFFSETOF(type,field) ((size_t)&((type*)0)->(field))   
// 得到一个field在一个struct中的所占用的字节数
#define FSIZ(type,field) sizeof(((type*)0)->field)            

// 得到一个变量的地址
#define B_PTR(var) ((byte*)(void *)&(var))
// 得到一个变量的地址
#define W_PTR(var) ((word*)(void *)&(var))  

// 将一个字母转化为大写
#define UPCASE(c) (((c)> 'a'&&(c)< 'z')?((c)-0x20):(c))  

// 判断一个字符是不是十进制数值
#define DECCHK(c) ((c) >= ''0'' && (c) <= ''9'')
// 判断一个字符是不是十六进制数值          
#define HEXCHK( c ) ( ((c) >= ''0'' && (c) <= ''9'') ||((c) >= ''A'' && (c) <= ''F'') ||((c) >= ''a'' && (c) <= ''f'') )    

// 递增,防止溢出
#define INC_SAT( val ) (val = ((val)+1 > (val)) ? (val)+1 : (val))      

// 返回数组元素的个数 
#define ARR_SIZE( a ) ( sizeof( (a) ) / sizeof( (a[0]) ) )              

#endif

使用一些宏跟踪调试

ANSI标准说明了五个预定义的宏名。它们是:

_LINE_ /*(两个下划线),对应%d*/
_FILE_ /*对应%s*/
_DATE_ /*对应%s*/
_TIME_ /*对应%s*/
_STDC_

条件编译

#ifdef 标识符
程序段1
#else
程序段2
#endif

#ifdef
程序段
#endif

#if 条件1
程序段1
#elif 条件2
程序段2
#elif 条件3
程序段3
#endif

相关文章

  • C++ 宏定义

    define 中的三个特殊的符号 #define Conn(x,y) x##y #define ToChar(x)...

  • C++ 宏定义

    定义宏 预处理器不是编译器,预处理器主要完成文本替换的操作,预处理器都是用 #xxx 的写法 头文件经常有类似的声...

  • Preprocessor

    预处理命令(主要有三种) 宏定义 文件包含 条件编译 宏定义如: 由于 C++已增加了 const 语句定义常量,...

  • c++基础(宏)

    有关 c++ 中宏的定义以及使用是今天的重点内容。 C++ 的宏定义将一个标识符定义为一个字符串,源程序中的该标识...

  • 深入理解C++11 2.5 static_assert

    在C++中,标准在或者 头文件中未程序员提供了assert宏,例如: C++中,可以通过定义宏N...

  • C++中的内联函数

    1、常量与宏回顾 C++中的const常量可以替代宏常数定义,如: const int A = 3; <===>...

  • 六、C++ 内联函数分析

    1、常量与宏 C++中的const常量可以替代宏常数定义: 我们还可以利用宏来定义宏代码片段: 但是宏代码块不是函...

  • C++宏定义续行符

    c++中经常遇到宏定义 ,宏定义要求的是一行完成 ,但是一般声明带有参数列表的宏定义的时候,由于函数体字符串太长,...

  • 虚幻引擎4-UE4 C++ UFUNCTION 宏 参数解析

    虚幻引擎c++中定义了许多宏,如UCLASS(),UPROPERTY(),UFUNCTION(),USTRUCT(...

  • [C++面试]宏相关问题

    1. 宏常量与宏函数 C++中用#define <宏名> <字符串>命令定义宏,在代码中将字符串替换宏名出现的位置...

网友评论

      本文标题:C++ 宏定义

      本文链接:https://www.haomeiwen.com/subject/rxvfqftx.html