c语言define的用法

c语言define的用法1 define 的简单定义作用 define 相当于一个简单的文本替换 对于普通的常量定义 我就不必多说了 但是对于类似于函数定义的形式 可能会出现错误 例如 defineAdd x y x y 用到代码中时会出现问题 比如计算式子 c Add x y d 本意是计算出 x 与 y 的和之后在分别与 c d 做乘积 可是因为 define 仅仅相当于一个简单的文本替换 所以真实的计算

 

1#define的简单定义作用

#define相当于一个简单的文本替换,对于普通的常量定义,我就不必多说了,但是对于类似于函数定义的形式,可能会出现错误,例如:

#define Add(x,y) x+y

用到代码中时会出现问题,比如计算式子c*Add(x,y)*d,本意是计算出xy的和之后在分别与cd做乘积,可是因为#define仅仅相当于一个简单的文本替换,所以真实的计算是c*x + y*d;这样的话就出现错误了!

2#define可以进行多行代码的定义,只需要在每行的末尾加上“\”符号即可,例如:

#define   MACRO(arg1,   arg2)   do   {   \

  \

stmt1;   \

stmt2;   \

  \

}   while(0) 

3、用#define实现条件编译,在大型的项目之中,需要通过条件编译来选择不同的编译环境,例如:

#ifdef   WINDOWS

……

……

#endif

#ifdef   LINUX

……

……

#endif

 

可以在编译的时候通过#define设置编译环境

4、如何定义宏、取消宏

//定义宏

#define   [MacroName]   [MacroValue]

//取消宏

#undef   [MacroName]

普通宏

#define   PI   (3.)

 

带参数的宏

#define   max(a,b)   ((a)> (b)?   (a),(b))

关键是十分容易产生错误,包括机器和人理解上的差异等等。

5、条件编译

#ifdef   XXX…(#else)   …#endif

例如   #ifdef   DV22_AUX_INPUT

#define   AUX_MODE   3

#else

#define   AUY_MODE   3

endif

#ifndef   XXX   …   (#else)   …   #endif

6、头文件(.h)可以被头文件或C文件包含;

重复包含(重复定义)

由于头文件包含可以嵌套,那么C文件就有可能包含多次同一个头文件,就可能出现重复定义的问题的。

通过条件编译开关来避免重复包含(重复定义)

例如

#ifndef   __headerfileXXX__

define   __headerfileXXX__

文件内容

#endif

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • arm 体系架构及其工作原理图_arm架构详解

    arm 体系架构及其工作原理图_arm架构详解架构的演变历史我们首先介绍ARMLtd,这里先说的是公司而不是架构。ARM的发展历史非常久远,超乎许多人的想象。首先,我们提供一些背景信息,ARM成立于20世纪90年代末,从另一家位于剑桥的公司分拆而来,那家公司叫做AcornComputers,曾经是英国教育市场的著名个人台式计算机供应商,现已不复存在。80年代中期时,Acorn一个小团队接受了一个挑战,为他们的下一代计…

    2022年10月14日
    5
  • GIS Experience (六):QGIS安装及使用教程

    GIS Experience (六):QGIS安装及使用教程目录

    2022年6月15日
    41
  • eclipse下载安装步骤(eclipse下载安装步骤)

    Eclipse是JavaWeb开发最常用的工具,下面详细介绍一下如何下载安装最新版Eclipse。一、Eclipse下载1.输入网址:https://www.eclipse.org/downloads/我们会到官网中找到如下的下载按钮,但默认下载的是Windows操作系统的64位,我们点击DownloadPackages选择其他类型的下载包2.选择EclipseIDEf…

    2022年4月16日
    142
  • pycharm设置壁纸_pycharm界面开发

    pycharm设置壁纸_pycharm界面开发一:打开pycharm,按两次shift输入setbackgroundimage或者用快捷键Ctrl+shift+A二:选择setbackgroundimage进入如下界面第一处的箭头是背景图片的路径,第二个是透明度。选完图片之后点击ok就可以看到效果啦!三:最终效果ps:提升一下敲代码的big,哈哈!…

    2022年8月27日
    5
  • ubuntu修改hostname

    在Ubuntu系统中,快速查看主机名有多种方法:其一,打开一个GNOME终端窗口,在命令提示符中可以看到主机名,主机名通常位于“@”符号后;其二,在终端窗口中输入命令:hostname或uname–

    2021年12月23日
    78
  • SQL优化最干货总结 – MySQL(2020最新版)[通俗易懂]

    MySQL-SQL优化干货总结(吐血版),别辜负了自己的梦想,欢迎白嫖、点赞、收藏。

    2022年4月6日
    44

发表回复

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

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