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位系统中会溢出的情况

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

  • 相关阅读:
    mqtt 服务器与客户端通讯
    MQTT--单片机实现即时通信
    source insight 如何建工程--以及快捷方式查找调用函数方法
    在联网时,两台linux服务器传输文件方法
    字符串截取函数-c语言
    strcpy(),strcat()的用法
    如何将红色区域数据调用解密函数直接打印到输出控制台(例如:crt控制台)
    如何把apdu[decode_len]打印出来
    SecureCRT中文乱码解决已设置UTF-8
    RobotFrameWork(五)控制流之if语句——Run Keyword If
  • 原文地址:https://www.cnblogs.com/hxu7373/p/3439923.html
Copyright © 2011-2022 走看看