zoukankan      html  css  js  c++  java
  • define的用法

    #define SUM 

    x

     

    x

    +

    x

     

     

    这还是定义的宏函数

    SUM

    x

    )吗?显然不是。编译器认为这是定义了一个宏:

    SUM

    ,其

    代表的是(

    x

     

    x

    +

    x

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    宏定义中的空格:

    #define SUM (x) (x)+(x) 
     这还是定义的宏函数SUM(x)吗?显然不是。编译器认为这是定义了一个宏:SUM,其代表的是(x) (x)+(x)

    在使用这个宏函数的时候,空格会被编译器忽略掉。也就是说,上一节定义好的宏函数SUM(x)在使用的时候在SUM 和(x)之间留有空格是没问题的。比如:SUM(3)和SUM (3)的意思是一样的

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    1、define的宏定义是将原表达式直接带进去然后再计算,不是先计算然后再带进计算的结果。注意下面的区别:

    define  PI  3.1415926

    define  n   2+2

    define  sin(x)  x*x

    define  sin(x)  (x)*(x)

    define  sin(x)  ((x)*(x))

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    2、特别应用

    #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;

    char* str = Conn("asdf", "adf")  结果就是  str = "asdfadf";  怎么样,很神奇吧

    #################################################################

    #@x,其实就是给x加上单引号,  结果返回是一个  const char。

    举例说:  char a = ToChar(1);  结果就是  a='1';

    做个越界试验

    char a = ToChar(123);  结果是  a='3';

    但是如果你的参数超过四个字符,编译器就给给你报错了!

    error C2015: too many characters in constant  :P

     ###################################################################

    #x,估计你也明白了,他是给x加双引号

     char* str = ToString(123132);

    就成了  str="123132";

    ####################################################################

     常用的标准宏定义:

    #define SEC_A_YEAR (60*60*24*365)UL  定义一年有多少秒,注意要考虑16位系统中会溢出的情况

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  • 相关阅读:
    Universal-image-loader Mason 修复版(ImageLoader Image can't be decoded)
    118、通过solid来定义不同边框的颜色,可以只定义一个边框的颜色
    Freeline的快速集成(转载)
    SQL存储过程解密
    Bootstrap
    PHP5.6.15连接Sql Server 2008配置方案
    php使用saop简单例子和注意事项
    php使用mysql和mysqli连接查询数据
    MYSQL中UNIX时间戳与日期的转换
    xp和win7安装telnet服务
  • 原文地址:https://www.cnblogs.com/hxu7373/p/3439923.html
Copyright © 2011-2022 走看看