ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C/C++宏定义讲解

2022-07-19 00:03:13  阅读:139  来源: 互联网

标签:常量 ## ifdef 定义 C++ 讲解 程序段 define


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

#define的概念

简单的宏定义

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

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

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

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

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

宏的使用情形

  1. 头文件包含
    把源程序中的#include 扩展为文件正文,即把包含的.h文件找到并展开到#include 所在处
  2. 条件编译
    预处理器根据#if#ifdef等编译命令及其后的条件,将源程序中的某部分包含进来或排除在外,通常把排除在外的语句转换成空行
    • #if 命令
      #if 整型常量表达式1
          程序段1
      #elif 整型常量表达式2
          程序段2
      #elif 整型常量表达式3
          程序段3
      #else
          程序段4
      #endif
      
    • #ifdef
      #ifdef  宏名
          程序段1
      #else
          程序段2
      #endif
      
  3. 宏展开
    预处理器将源程序文件中出现的对宏的引用展开成相应的宏定义,即本文所说的#define的功能,由预处理器来完成,这里是单纯的替换与展开
  4. 避免头文件重复引用
    #ifndef INCLUDE_NAME_H 
    #define INCLUDE_NAME_H 
        //头文件内容 
    #endif
    

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

#define Conn(x,y) x##y
#define ToChar(x) #@x
#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";

标签:常量,##,ifdef,定义,C++,讲解,程序段,define
来源: https://www.cnblogs.com/CJuncheng/p/16492467.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有