0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【C语言进阶】宏定义里面使用#define会怎么样?

嵌入式物联网开发 来源:嵌入式物联网开发 作者:嵌入式物联网开发 2022-10-31 10:39 次阅读

C语言进阶】宏定义里面使用#define会怎么样?

这个问题,学过C语言的你,了解过吗?

1 问题描述

**大家都知道在C语言中,使用 **#define 进行宏定义,那么如果宏定义里面又出现 #define 呢?

这是宏定义的嵌套写法吗?

这种写法有没有问题?

2 问题验证

为此,我们写一段测试代码验证下:

#include #define TEST_MACRO_1 100
#define TEST_MACRO_2 #define xxxint main(int argc, const char *argv[])
{
printf("test = %d\\\\\\\\n", TEST_MACRO_2);
​
return 0;
}

我们编译运行下看看:

image-20220930215603617

**注意看,这里的宏定义压根就是 ** 语法错误 ,也就是说在C语言里面就不支持宏定义的定义体里面又 #define 这样的字眼。

3 总结

  • **C语言中使用 **#define 定义一个宏定义;
  • **但是宏定义的定义体里面,不能再次出现 **#define 这种关键字,否则将会报语法错误。

4 更多分享

[架构师李肯]

架构师李肯全网同名 ),一个专注于嵌入式IoT领域的架构师。有着近10年的嵌入式一线开发经验,深耕IoT领域多年,熟知IoT领域的业务发展,深度掌握IoT领域的相关技术栈,包括但不限于主流RTOS内核的实现及其移植、硬件驱动移植开发、网络通讯协议开发、编译构建原理及其实现、底层汇编及编译原理、编译优化及代码重构、主流IoT云平台的对接、嵌入式IoT系统的架构设计等等。拥有多项IoT领域的发明专利,热衷于技术分享,有多年撰写技术博客的经验积累,坚信【知识改变命运,技术改变世界】!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7513

    浏览量

    124186
  • 函数
    +关注

    关注

    3

    文章

    3845

    浏览量

    61225
  • 宏定义
    +关注

    关注

    0

    文章

    48

    浏览量

    8921
  • define
    +关注

    关注

    0

    文章

    13

    浏览量

    3671
收藏 人收藏

    评论

    相关推荐

    CubeMx生成的stm32f013vet6设备,对于SDIOCLK频率设置的定义与手册里面对不上是为什么?

    stm32f1xx_ll_sdmmc.h文件里面的这两个定义是针对48MHz 这里的48MHz是怎么来的? 并且在进行初始化的时候会使用到这一个, 如果时钟是72MHz的话
    发表于 03-08 08:29

    C语言#define的应用

    在 C/C++ 编程语言中,当程序被编译时,被发送到编译器,编译器将程序转换为机器语言,然后完成编译并执行该程序。预处理器也称为宏预处理器。
    发表于 03-06 11:29 92次阅读
    C<b class='flag-5'>语言</b>#<b class='flag-5'>define</b>的应用

    RK3568驱动指南|驱动基础进阶篇-进阶5 自定义实现insmod命令实验

    RK3568驱动指南|驱动基础进阶篇-进阶5 自定义实现insmod命令实验
    的头像 发表于 02-20 14:10 132次阅读
    RK3568驱动指南|驱动基础<b class='flag-5'>进阶</b>篇-<b class='flag-5'>进阶</b>5 自<b class='flag-5'>定义</b>实现insmod命令实验

    define定义

    define定义 以#号开头的都是编译预处理指令,它们不是C语言的成分,但是C程序离不开它们,#define用来定义一个宏,程序在预处理阶
    的头像 发表于 11-24 15:35 324次阅读

    C语言进阶之嵌入式系统高级C语言编程

    电子发烧友网站提供《C语言进阶之嵌入式系统高级C语言编程.rar》资料免费下载
    发表于 11-18 10:32 0次下载
    C<b class='flag-5'>语言</b><b class='flag-5'>进阶</b>之嵌入式系统高级C<b class='flag-5'>语言</b>编程

    C语言定义全局变量时,如何在定义变量时就指定好变量的地址?

    请问,C语言定义全局变量时,如何在定义变量时就指定好变量的地址?
    发表于 11-03 06:31

    C语言定义讲解

    近日在某一技术群又水群时某一群友将这个称之为“常量”,事实上在C语言中#define 正确的叫法叫做“宏定义”属于预处理指令中的一种,在C语言中应用极其广泛。
    发表于 10-01 13:28 327次阅读
    C<b class='flag-5'>语言</b>宏<b class='flag-5'>定义</b>讲解

    基于Rust语言Hash特征的基础用法和进阶用法

    ,包括Hash trait、HashMap、HashSet等,本教程将详细介绍Rust语言Hash特征的基础用法和进阶用法。 基础用法 使用Hash trait 在Rust语言中,Hash trait
    的头像 发表于 09-19 16:02 683次阅读

    C语言中宏定义的使用技巧

    #define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。
    发表于 09-05 10:12 462次阅读
    C<b class='flag-5'>语言</b>中宏<b class='flag-5'>定义</b>的使用技巧

    c语言带参数的宏定义

    c语言带参数的宏定义  C语言定义是一种宏替换机制,它可以将一个标识符替换为一个代码片段。宏定义通常在程序中用来方便地进行常量
    的头像 发表于 09-04 17:45 1609次阅读

    c语言定义可以嵌套吗?

    c语言定义可以嵌套吗? C语言定义可以嵌套,也就是一个宏定义可以包含另一个宏定义,这也被称为
    的头像 发表于 09-04 17:38 2460次阅读

    C语言中宏定义的应用

    在C语言中,宏定义是一种预处理指令,用于在代码中定义和使用常量、函数或代码片段的替代。
    发表于 08-17 15:33 356次阅读

    如何才能读懂e203_hbirdv2里面的各种信号和定义的作用?

    怎么才能读懂e203_hbirdv2里面的各种信号和定义的作用啊?实在不知道命名的是啥
    发表于 08-12 06:35

    ARM C语言扩展规范

    ARM C语言扩展(ACLE)规范指定源语言扩展和实现C/C++编译器可以实现的选项,以便让程序员更好地利用ARM体系结构。 扩展包括: 
    发表于 08-02 06:27

    Eclipse无法解析定义如何解决?

    我正在尝试编写一个简单的应用程序来将我的 ESP-01 连接到我的家庭 AP。为此,在代码中我定义了两个——我的 AP SSID 和密码如下: 代码:全选#define
    发表于 06-08 06:54