返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言:代码宏详解
  • 926
分享到

C语言:代码宏详解

2024-04-02 19:04:59 926人浏览 八月长安
摘要

目录1、定义宏2、宏函数3、多行宏4、宏变长参数5、原样输出变量名6、例子7、宏与函数的差异总结1、定义宏 #define ARRAY_SIZE 100 double data[

1、定义宏


#define ARRAY_SIZE 100
double data[ARRAY_SIZE];

如下图,上方代码在编译器进行宏替换时会将代码中的ARRAY_SIZE替换成100

在这里插入图片描述

2、宏函数

宏函数的参数是没有任何类型的概念的,因此

宏函数使用如下,代码中的MAX(3,4)会替换成宏定义的表达式


#define MAX(a,b) a > b ? a : b
int n1 = MAX(3,4);

在这里插入图片描述

注意

在这里插入图片描述

上方替换出错,是因为给宏函数的参数传递的是一个表达式,可以使用下图方法

在这里插入图片描述

宏函数的参数不要传表达式,如下图,表达式进行了2次运算

在这里插入图片描述

3、多行宏

使用斜杠连接下一行代码,适用于代码很长的宏


#define IS_HEX_CHARACTOR(ch)   \
( (ch) >= '0' && (ch) <= '9') || \
( (ch) >= 'A' && (ch) <= 'F') || \
( (ch) >= 'a' && (ch) <= 'f')
int main(){
    printf("is hex charactor:%d", IS_HEX_CHARACTOR('a'));
}

在这里插入图片描述

4、宏变长参数


#define PRINTLNF(fORMat, ...) printf(format, __VA_ARGS__)

在这里插入图片描述

在这里插入图片描述

5、原样输出变量名

在这里插入图片描述

6、例子


#include <stdio.h>
#define PRINTF(format, ...) printf("("__FILE__":%d) %s: "format,__LINE__,__FUNCTION__, ##__VA_ARGS__)
#define PRINT_INT(value) PRINTF(#value":%d \n", value)
int main(){
    int no = 1;
    PRINT_INT(no);
    return 0;
}

在这里插入图片描述

7、宏与函数的差异

在这里插入图片描述

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: C语言:代码宏详解

本文链接: https://lsjlt.com/news/137008.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言:代码宏详解
    目录1、定义宏2、宏函数3、多行宏4、宏变长参数5、原样输出变量名6、例子7、宏与函数的差异总结1、定义宏 #define ARRAY_SIZE 100 double data[...
    99+
    2024-04-02
  • c语言爱心代码详解
    以下是一个爱心形状的C语言代码:```c#include int main() {int i, j;int n = 6; // 控制...
    99+
    2023-09-28
    c语言
  • 详解C语言#define预处理宏定义
    目录#define介绍: #define宏定义无参的一般形式为:#define  标识符 常量 #define宏定义有参的一般形式为:#define  标识符(参...
    99+
    2024-04-02
  • C语言#define定义宏的使用详解
    目录1.宏是什么2.宏的用法3. 宏的注意事项4. 宏和函数的区别5.命名要求6. 条件编译常见条件编译指令及应用场景1.宏是什么 #define 机制包括了一个规定,允许把参数替换...
    99+
    2022-11-13
    C语言#define定义宏 C语言 #define
  • Go语言代码转C语言的实现方法详解
    随着计算机科技的快速发展,编程语言也在不断涌现。其中,Go语言因其简洁、高效和并发性能而备受关注。然而,在某些特定的场景下,我们可能需要将Go语言代码转换为C语言,以提高性能或兼容性。...
    99+
    2024-03-07
    代码实现 转换方法 go到c go语言
  • C语言链表详解及代码分析
    目录什么是链表环境构建建立静态链表包含所需要的头文件宏定义相关变量创建一个结构体主函数结果展示说明建立动态链表包含所需要的头文件宏定义相关变量创建一个结构体建立链表函数主函数结果展示...
    99+
    2024-04-02
  • C语言中#define定义的标识符和宏实例代码
    目录1.#define定义标识符语法举个栗子2.#define定义宏#define替换的规则#与## #的用法:宏的缺点 宏和函数的优缺点     &n...
    99+
    2024-04-02
  • C语言超详细讲解宏与指针的使用
    目录1、关于define2、初识指针(1)内存(2)示例(3)指针的使用示例(4)指针变量的大小1、关于define define是一个预处理指令,有两种用法,一种是用define定...
    99+
    2024-04-02
  • C语言中宏和函数的9个区别详解
    目录1.代码长度2.执行速度3.操作符优先级4.带有副作用的参数5.参数类型6.调试7.递归8.命名约定9.其他总结C语言中的宏和函数是非常相似的,它们都可以完成类似的功能。比如,想...
    99+
    2023-05-14
    C语言 函数区别 C语言 函数 C语言 C语言 函数
  • C语言冒泡排序算法代码详解
    今天我们来用C语言实现一下冒泡排序 首先我们来了解一下什么叫做冒泡排序,冒泡顾名思义把质量轻的气体(如二氧化碳一样)浮到水面上(如可乐中的二氧化碳),因此冒泡排序的原理就是N个元素在...
    99+
    2024-04-02
  • C/C++ 宏详细解析
    众多C++书籍都忠告我们C语言宏是万恶之首,但事情总不如我们想象的那么坏,就如同goto一样。宏有一个很大的作用,就是自动为我们产生代码。如果说模板可以为我们产生各种型别的代码(型别...
    99+
    2022-11-15
    C C++
  • 详解C语言中函数宏的三种封装方式
    目录1. 函数宏介绍2. {} 方式3. do{...}while(0) 方式4. ({}) 方式5. 总结1. 函数宏介绍 函数宏,即包含多条语句的宏定义,其通常为某一被频繁调用的...
    99+
    2023-03-20
    C语言函数宏封装 C语言函数宏 C语言宏
  • C语言详细分析宏定义的使用
    目录一、C语言中函数的“缺陷”二、再次理解函数三、C语言中的宏四、宏与函数的不同五、编译器组成简介六、宏使用示例七、再论宏常量八、小结一、C语言中函数的&ld...
    99+
    2024-04-02
  • c语言宏定义报错怎么解决
    在解决C语言宏定义报错的问题时,我们可以尝试以下几种方法: 检查宏定义的书写格式:确保宏定义的格式正确,以及宏名称和宏值之间是否...
    99+
    2023-10-27
    c语言
  • C语言宏函数containerof()简介
    在linux 内核编程中,会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这样的一般人就会绝望了(这一堆都是什么呀? ...
    99+
    2024-04-02
  • C语言预处理预编译命令及宏定义详解
    目录程序翻译环境和执行环境翻译环境:详解编译+链接1. 编译 — 预处理/预编译 test.c ---- test.i2. 编译 — 编译 test.i ---- test.s3. ...
    99+
    2024-04-02
  • 详解如何在Go语言中调用C源代码
    目录开坑说明内嵌形式外置的C代码1. 构建libauth.a静态库2. 对main.go稍加修改3. 编译开坑说明 最近在编写客户端程序或与其他部门做功能集成时多次碰到了跨语言...
    99+
    2022-06-07
    GO go语言
  • C语言超详细讲解栈的实现及代码
    目录前言栈的概念栈的结构栈的实现创建栈结构初始化栈销毁栈入栈出栈获取栈顶元素获取栈中有效元素个数检测栈是否为空总代码Stack.h 文件Stack.c 文件Test.c 文件前言 栈...
    99+
    2024-04-02
  • 用c语言编写一个通讯录代码详解
    目录实现通讯录的思路如下:总结实现通讯录的思路如下: 1.程序运行起来时用户首先要看到菜单栏选项并且对应菜单栏所给出的选项做出选择,这里我们简单设计一个Menu()函数可以让用户看见...
    99+
    2024-04-02
  • C语言宏定义的扩展定义讲解
    目录1. 常量宏定义2. 定义宏函数3. 宏定义和#号结合4. 宏定义和两个#结合5. 宏定义和do…while()的结合6. #ifdef…#else&...
    99+
    2022-12-27
    C语言宏定义 C语言宏定义扩展
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作