• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C宏定义

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

 

#include <stdio.h>

#define PI 3.14159   //宏---文本替换 
//在C99之前没有const,只能用define
#define FORMAT "%f\n"
//编译时会用"%f\n"替换FORMAT
//名字必须是一个单词,值可以是各种东西
//完全的文本替换

int main ()
{
   //预定义的宏
   printf("%d\n",__LINE__) ;//当前行号
    printf("%s\n",__FILE__) ;//当前源文件的名称,用字符串常量表示
   //D:\CSS\hello.c
   
   printf("%s\n",__DATE__) ;//当前源文件编辑日期 
   //Jul 25 2020
   
   printf("%s\n",__TIME__) ;//当前源文件的最新编译吋间,用“hh:mm:ss”形式的宁符串常量表示
   
   printf("%d\n",__STDC_VERSION__) ;//如果当前编译器符合C89,那么它被定义为199409;如果符合C99,那么它被定义为199901:在其他情况下,该宏为末定义
   
   return(0);
}

 

#include <stdio.h>

#define cube(x) ((x)*(x)*(x)) //带参数的宏
//用 ((x)*(x)*(x))替换 cube(x)
//防止出错:都用()
//执行效率比函数高 

#define MIN(a,b) ((a)>(b)?(b):(a))  //多参数的宏 


int main ()
{
   printf("%d\n",cube(3));
   
   
   return(0);
}

 

利用宏传递参数类型

还有一些任务根本无法用函数实现,但是用宏定义却很好实现。比如参数类型没法作为参数传递给函数,但是可以把参数类型传递给带参的宏

看下面的例子:

  #define MALLOC(n, type) \
  ( (type *) malloc((n)* sizeof(type)))

利用这个宏,我们就可以为任何类型分配一段我们指定的空间大小,并返回指向这段空间的指针。我们可以观察一下这个宏确切的工作过程:

int *ptr; 
ptr = MALLOC ( 5, int );

将这宏展开以后的结果:

ptr = (int ) malloc ( (5) sizeof(int) );

这个例子是宏定义的经典应用之一,完成了函数不能完成的功能

 

## 拼接

#define test1(i) test(x##i)  
  
int main()  
{  
    
    int x1=1, x2=2, x3=3;  
    test1(1);              // 相当于 test(x1)  
    test1(2);              // 相当于 test(x2)  
    test1(3);              // 相当于 test(x3)  
  
    return 0;  
}  

 

 

 

 

 

 

 

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c++浅拷贝与深拷贝(LeetCode669)发布时间:2022-07-13
下一篇:
Cstatic关键字理解发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap