C/C++宏定义讲解

红太狼 2024-03-16 22:26 228阅读 0赞

C/C++宏定义讲解

#define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本. 使用宏时是简单的代码段替换.

#define的概念

简单的宏定义

  1. #define <宏名>  <字符串>
  2. 例: #define PI 3.1415926

注:使用简单的宏定义可以定义一些常量,区分简单宏定义const valtype 的区别(优先使用const)

带参数的宏定义(宏函数)

  1. #define <宏名> (<参数表>) (<宏体>)
  2. 例: #define Max(a, b) ( (a)>(b) ? (a) : (b))

注:简单代码段使用宏函数比使用函数好,免去了函数调用的开销,提高运行效率

宏的使用情形

  1. 头文件包含
    把源程序中的#include 扩展为文件正文,即把包含的.h文件找到并展开到#include 所在处
  2. 条件编译
    预处理器根据#if#ifdef等编译命令及其后的条件,将源程序中的某部分包含进来或排除在外,通常把排除在外的语句转换成空行

    • #if 命令

      1. #if 整型常量表达式1
      2. 程序段1
      3. #elif 整型常量表达式2
      4. 程序段2
      5. #elif 整型常量表达式3
      6. 程序段3
      7. #else
      8. 程序段4
      9. #endif
    • #ifdef

      1. #ifdef 宏名
      2. 程序段1
      3. #else
      4. 程序段2
      5. #endif
  3. 宏展开
    预处理器将源程序文件中出现的对宏的引用展开成相应的宏定义,即本文所说的#define的功能,由预处理器来完成,这里是单纯的替换与展开
  4. 避免头文件重复引用

    1. #ifndef INCLUDE_NAME_H
    2. #define INCLUDE_NAME_H
    3. //头文件内容
    4. #endif

define中的三个特殊符号:#,##,#@

  1. #define Conn(x,y) x##y
  2. #define ToChar(x) #@x
  3. #define ToString(x) #x
  • x##y表示x连接y, 如int n = Conn(123,456); // 结果就是n=123456;
  • #@x表示给x加单引号, 如char a = ToChar(1); //结果就是a='1';
  • #x表示给x加双引号, 如std::string str = ToString(12345); //结果就是std="12345";

发表评论

表情:
评论列表 (有 0 条评论,228人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C/C++定义讲解

    [C/C++宏定义讲解 ][C_C_] 宏 \define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为

    相关 定义

    六、宏定义。 1、 什么是宏定义? -> 宏定义只是一个替换而已。 其实宏定义与枚举类型非常相似,都是可以使得某一个常量变得有意义。 宏定义除了可以替换int类型的

    相关 定义函数

      要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。   在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这

    相关 定义

    1、重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植,假如平台不一样,字节不一样,就仅仅改变typedef定义即可。 typed