码迷,mamicode.com
首页 > 编程语言 > 详细

C语言学习——宏定义

时间:2017-01-23 23:48:05      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:code   预处理器   style   源程序   div   字符串   efi   span   char   

1.简单的宏定义

 #define <宏名>  <字符串>
例:#define LEN 0.5

2.带参数的宏定义

#define <宏名>  (<参数表>) <宏体>
例:#define Fun(para) para*2

3.实例分析

1 #define VALUE 2+2
2 void main()
3 {
4      int n=VALUE*VALUE;
5      printf("%d",n);
6 }

    这段代码的输出是多少呢?16?也许会让你有点意外,结果是8。原因就是预处理器在处理C源程序文件中出现的对宏的引用的时候只是进行简单的替换与展开,并不进行任何的计算处理。所以对第4       行代码展开后是n=2+2*2+2,结果是8。要想让结果是16,只需要将宏定义作如下调整即可。

#define VALUE (2+2)

    在带参数的宏定义中也会出现类似的问题。

#define Fun(x) x*x
void main()
{
    int n=Fun(2+2);
    printf("%d",n);
}

    这段代码的输出依然是8。原因如上。

4.三个符号:#,##,#@

#define Conn(x,y) x##y
#define ToChar(x) #@x
#define ToString(x) #x

  x##y:表示x连接y.

    如:int n=Conn(12,89);n的结果是1289;

          char* str=Conn("abc","der");str的结果是str="abcder";

 #@x:表示给x加上单引号,结果返回一个const char。

 #x   :表示给x加上双引号,结果返回一个字符串。

 

C语言学习——宏定义

标签:code   预处理器   style   源程序   div   字符串   efi   span   char   

原文地址:http://www.cnblogs.com/shuyerenD/p/6345119.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!