zoukankan      html  css  js  c++  java
  • C++中#和##的特殊使用

    1.用#号将输入的内容转换为字符串。

        用##号将两个参数合并。

      #include <iostream>
      using namespace std;
    
      //将输入的内容转换成字符串
      #define AllToString(str) #str
    
      //将两个参数粘在一起
      #define AllToParter(parm1,parm2) parm1##parm2
    
      int main()
      {
    	cout<<AllToString(hello hxy!)<<endl;//输出hello hxy!
    	cout<<AllToParter("girl","friend")<<endl;//输出girlfriend
    	return 0;
      }


    2.当参数中含有另一个宏的时候。

    需要注意的是:凡是宏定义里有用'#'或'##'的地方,宏参数是不会再展开的。

    即:

    #include <iostream>
    using namespace std;
    
    //将输入的内容转换成字符串
    #define AllToString(str) #str
    
    #define TWO 2
    
    int main()
    {
    	cout<<AllToString(TWO)<<endl;//输出TWO
    	return 0;
    }


     为了避免这种情况,需要在中间加上一层用作转换的宏,例如:

    #include <iostream>
    using namespace std;
    
    //将输入的内容转换成字符串
    #define _AllToString(str) #str
    #define AllToString(str) _AllToString(str)
    #define TWO 2
    
    int main()
    {
    	cout<<AllToString(TWO)<<endl;//输出2
    	return 0;
    }


     

  • 相关阅读:
    将表中数据生成SQL语句
    遍历页面所有的控件
    MSN不能登陆
    刷新框架页
    JS传参出现乱码
    iframe攻击
    有关于VS调试Javascript的问题
    C#中StringBuilder类的使用
    前瞻XAML
    Asp.Net在SqlServer中的图片存取
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3163047.html
Copyright © 2011-2022 走看看