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

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

  • 相关阅读:
    电容的用法:去耦、旁路、滤波等
    成为出色工程师的十大要素
    常用三极管的区别 9012 9013 9014 9015 8550 8050
    照明的几个光学概念
    PCB元件封装
    为什么诈骗短信看上去那么弱智
    摄像·镜头
    LED家居照明
    光色的应用与照度范围
    PowerPCB(PADS)常见问题全集
  • 原文地址:https://www.cnblogs.com/hxu7373/p/3439923.html
Copyright © 2020-2023  润新知