zoukankan      html  css  js  c++  java
  • 高端技巧:怎样使用#define定义变量

    Introduction

    想在源文件里定义一个跟行号有关的变量,每次都手动输入实在是太慢了。本文介绍怎样使用宏定义来定义与行号有关的变量。

    比如:我们想在源码的第10行定义A_10这种一个整形变量。

    用宏定义来完毕使命

    在宏定义中,标准C/C++中给出了两个特殊的操作符:#和##。

    #是用于给红參数加入双引號;##用于链接两个宏參数。既然能够连接两个宏參数,那我们就能够链接一个首字母和行号作为一个总体了!

    于是,我们就这样写:

    #define MM(A) A##__LINE__
    int main(){
    int MM(C);
    }

    编译后发现,我们定义的居然是C__LINE__这个变量。并非我们想要的!为什么呢?
    由于编译器在预处理的时候并没有把__LINE__展开。而是把它看成了一个总体!怎么办?
    我们能够通过再定义还有一个宏来先展开行号。然后在作为參数调用MM这个宏。

    #define AA(B,C) B##C
    #define BB(B,C) AA(B,C)
    #define DD(A) BB(A,__LINE__)
    int main(){
    int DD(V);
    }

    OK了,我们成功定义了与行号有关的变量了!

  • 相关阅读:
    创建Java项目报错处理
    samba服务器的安装及配置
    如何给Ubuntu 安装Vmware Tools
    Ubuntu切换至root用户
    网络打印机的配置
    tigervnc*
    163镜像地址
    浅谈数据库的完整性
    Android之获取本地图片并压缩方法
    网址收藏
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7190034.html
Copyright © 2011-2022 走看看