#define 定义宏

宏(Macro)是预处理命令的一种,它允许用一个标识符来表示一个字符串

1.有关定义宏的代码末尾不需要添加";"(分号)

2.定义宏define在计算的式子中相当于替代,类似于数学中的需要带入数值的x

#include <stdio.h>
#define ADD(x,y) x+y
int main(){
printf("%d\n", 3 * 2 + ADD(2, 2) * 2);//3*2+2+2*2=12
return 0;
}
#include <stdio.h>
#define ADD(x,y) (x+y)
int main(){
printf("%d\n", ADD(2, 2) * 3);//(2+2)*3=12
return 0;
}

3.宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结束。如要终止其作用域可使用#undef命令。例如:

#define PI 3.14159

int main(){
// Code
return 0;
} #undef PI void func(){
// Code
}

表示 PI 只在 main() 函数中有效,在 func() 中无效。

4.代码中的宏名如果被引号包围,那么预处理程序不对其作宏代替,例如:

#include <stdio.h>
#define OK 100
int main(){
printf("OK\n");
return 0;
}

运行结果:OK

语法:

define 宏名 宏的内容

带参宏定义的一般形式为:

#define 宏名(形参列表) 字符串

有两种形式:

类似与定义常量: #define MAX 100

类似与定义函数:#define ADD(x,y) x+y

c--> #define 定义宏的更多相关文章

  1. 结构体中使用#define定义宏

    struct  hostent {   char    *h_name;        /* official name of host */   char    **h_aliases;    /* ...

  2. #define定义宏函数 的正确使用

    如何使用宏来定义一个自定义函数呢?首先我们来看下面这段代码 #define SQUARE(x) x*x int main() { int a = 5; printf("SQUARE(a): ...

  3. const define 定义常量的区别

    1.用const定义常量在编译的时候,提供了类型安全检查,而define 只是简单地进行字符串的替换 2.const定义的常量,会分配相应的内存空间.而define没有分配空间,只是在程序中与处理的时 ...

  4. const变量与define定义常量的区别

    一.概念性区别 const 变量就是在普通变量前边加上一个关键字const,它赋值的唯一机会就是“定义时”,此变量不能被程序修改,存储在rodata区. define定义的是常量,不是变量,所以编译器 ...

  5. 使用#define定义字面值和伪函数

    #define是C语言提供的宏命令,其主要目的是:在编程时,为程序员提供一定方便,并能在一定程度上提高程序的执行效率.#define将一个标示符定义为一个字符串,该标示符被称为宏,被定义的字符串称为字 ...

  6. C/C++中define定义的常量与const常量

    常量是在程序中不能更改的量,在C/C++中有两种方式定义常量,一种是利用define宏定义的方式,一种是C++中新提出来的const型常变量,下面主要讨论它们之间的相关问题: define定义的常量: ...

  7. UIKIT_EXTERN和define定义常量

    看过我其他的博客的人都知道,我喜欢用define定义常量,最近看了一个开源的轮子,使用UIKIT_EXTERN这个定义的常量,了解了一下,发现使用宏定义的常量会在内存中临时开辟一份内存空间,而使用UI ...

  8. 预定义宏,C语言预定义的宏详解

    1.预定义宏 对于预定义宏,相信大家并不陌生.为了方便处理一些有用的信息,预处理器定义了一些预处理标识符,也就是预定义宏.预定义宏的名称都是以"__"(两条下划线)开头和结尾的,如 ...

  9. C预定义宏

    作用:对于__FILE__,__LINE__,__func__这样的宏,在调试程序时是很有用的,因为你可以很容易的知道程序运行到了哪个文件的那一行,是哪个函数. 下面一个例子是打印上面这些预定义的宏的 ...

  10. latex如何定义宏,插图统一尺寸减少工作量

    问题背景是这样的,因为我要在文中插入一系列的图片,但是这些图片的大小我要保持一致,来达到预期的效果. 比如我有三个figure,这三个figure中,每个figure里面有两行,5列图片,我想要的是, ...

随机推荐

  1. 如何通过Java代码向Word文档添加文档属性

    Word文档属性包括常规.摘要.统计.内容.自定义.其中摘要包括标题.主题.作者.经理.单位.类别.关键词.备注等项目.属性相当于文档的名片,可以添加你想要的注释.说明等.还可以标注版权. 今天就为大 ...

  2. Grafana 系列文章(十):为什么应该使用 Loki

    ️URL: https://grafana.com/blog/2020/09/09/all-the-non-technical-advantages-of-loki-reduce-costs-stre ...

  3. ES的数据结构

    1 ES的数据结构 es使用怎样的数据结构来存储数据呢 通过以下四种的逻辑组合来存储数据:索引.类型.文档和字段. 1.1 index索引 数据属于哪个索引?不同的数据用不同的索引来区分. 比如 当前 ...

  4. 【KAWAKO】audiotsm-使用python对音频进行变速不变调处理

    目录 安装库 导入相关库 定义reader 定义writer 定义WSLOA算法,并运行 官方手册 源码 安装库 pip install audiotsm 导入相关库 import audiotsm ...

  5. JZOJ 4211. 【五校联考1day2】送你一颗圣诞树

    题目 解析 \(Code\) #include<cstdio> #include<map> #include<iostream> #include<cstri ...

  6. Python中的魔术方法大全

    魔术方法 一种特殊的方法而已 特点 不需要人工调用,在特定时刻自动触发执行 魔术方法种类 1.__init__初始化方法******* 触发时机:实例化对象之后触发作用:为对象添加对象的所属成员参数: ...

  7. Word 设置脚注和尾注

    描述 脚注一般位于页面的底部,作为文档某处内容的注释.尾注一般位于文档的末尾,列出引文的出处等. 设置脚注和尾注 将光标移动到要插入脚注或尾注的地方,然后点击"引用"选项卡. 左边 ...

  8. Postgresql之闪回数据库示例

    一.摘要 在Oracle中,若发生重大的误操作,那么我们可以使用flashback database命令来把数据库整体闪回到过去的误操作的时间点,当然前提是需要打开数据库的闪回功能. 在PG中,能否也 ...

  9. Mybatis-概览地图

    思考: "为什么在使用 Mybatis 的时候,只需定义一个接口,不用写实现类就能使用XML中或者注解上配置好的SQL语句,就能完成对数据库 CRUD 的操作呢?" 这是因为用到了 ...

  10. Spring cloud Alibaba Nacos服务注册发现和配置中心

    Nacos(官方网站:http://nacos.io)是一个易于使用的平台,旨在用于动态服务发现,配置和服务管理.它可以帮助您轻松构建云本机应用程序和微服务平台. Nacos = Eureka + c ...