C语言中define的用法详解

C语言中define的用法详解宏 无非就是定义一个替换的量 好比 definePI3 这样的功能 再深一点就是写一个类似函数的定义 好比 defineMAX a b a gt b a b 这样的功能 下面讲解一下具体用法 一 简单的 define 定义 defineMAXTIM 一个简单的 MAXTIME 就定义好了 它代表 1000 如果在程序里面写 if i

宏——无非就是定义一个替换的量,好比#define PI 3.,这样的功能,再深一点就是写一个类似函数的定义,好比#define MAX(a,b) ((a) > (b) ? (a) : (b))这样的功能。下面讲解一下具体用法:

一、简单的define定义

#define MAXTIME 1000 

一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写

if(i<MAXTIME){ 
   .........} 

二、define的“函数定义”

define可以像函数那样接受一些参数,如下

#define max(x,y) (x)>(y)?(x):(y); 
#define Add(a,b) a+b; 

在一般使用的时候是没有问题的,但是如果遇到如:c * Add(a,b) * d的时候就会出现问题,代数式的本意是a+b然后去和c,d相乘,但是因为使用了define(它只是一个简单的替换),所以式子实际上变成了:

c*a + b*d 

另外举一个例子:

#define pin (int*); pin a,b; 

三、宏的单行定义(少见用法)

#define A(x) T_x #define B(x) #@x #define C(x) #x 

四、define的多行定义

#define可以进行多行定义,这是一个非常经典而且在设备驱动代码中经常要用到的一个方法,格式如下:

#define MACRO(arg1,arg2) do { 
      \ stmt1; \ stmt2; \ }while(0) 

五、定义宏和取消宏定义的方法

定义一个宏使用#define,取消一个宏定义使用#undef

//定义宏 #define (MacroName) (MacroValue) //取消宏 #undef (MacroName) 

六、使用宏进行条件编译

格式如下:#ifdef … (#else) … #endif

#ifdef HELLO #define WORLD 1 #else #define WORLD 0 #endi 

七、用define来处理头文件被头文件或者源文件包含的情况

由于头文件包含可以嵌套,那么c文件有可能包含多次同一个头文件,就会出现重复定义的问题的,那么可以就通过条件编译开关来避免重复包含,如下:

 #ifndef _HELLO_H_ #define _HELLO_H_ ... //文件内容 ... #endif 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202779.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午11:19
下一篇 2026年3月19日 下午11:19


相关推荐

  • 冒泡排序的代码java_冒泡排序java代码实现

    冒泡排序的代码java_冒泡排序java代码实现publicclassBubbleSort{publicstaticint[]sort(int[]array){for(inti=1;iarray[j+1]){inttemp=array[j];array[j]=array[j+1];array[j+1]=temp;flag=false;}}System.out.println(flag);//如果为true,则说明排序已…

    2022年6月16日
    33
  • idea好看的主题插件_idea主题美化插件

    idea好看的主题插件_idea主题美化插件文章来源|blog.csdn.net/weixin_46146269/article/details/104793277IntelliJIDEA介绍IDEA,全称IntelliJIDEA,是Java语言的集成开发环境,IDEA在业界被公认为是最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS…

    2022年4月19日
    216
  • 图形验证码的作用

    图形验证码的作用图形验证码是验证码的一种。验证码(CAPTCHA)是“CompletelyAutomatedPublicTuringtesttotellComputersandHumansApart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意激活成功教程密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破…

    2022年7月14日
    22
  • 云夜卡社区系统总控源码_云夜卡社区系统

    云夜卡社区系统总控源码_云夜卡社区系统介绍:1.购买服务器安装宝塔2.添加站点php5.63.上传源码解压【解压出4个目录】4.再次添加3个站点【不添加数据库和ftp】5.每个站点对应一个源码目录6.配置文件和伪静态7.访问控制端域名/admins8.配置主站域名添加主站9.访问主站域名/admin分销:域名/fenxiao总控:域名/admins主站:域名/admin分站:域名/home用户:域名/user网盘下载地址:http://kekewangLuo.net/WL6ONV5KixK0图片:

    2022年8月13日
    7
  • 刚刚,xAI 发布 Grok Code Fast 1 编程模型,快、便宜、免费

    刚刚,xAI 发布 Grok Code Fast 1 编程模型,快、便宜、免费

    2026年3月15日
    1
  • 马尔可夫不等式

    马尔可夫不等式以下内容摘自此处 假设随机变量的取值为非负数 则马尔可夫不等式可写为如下形式 其中 该公式可证明如下 即

    2026年3月20日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号