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

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

3天内不再提示

嵌入式C预处理器的基本概念和常用指令

CHANBAEK 来源:南山府嵌入式 作者:编外人员 2023-04-13 16:11 次阅读

简介

嵌入式系统开发中,C预处理器是非常重要的一部分,可以在编译之前对源代码进行宏替换、条件编译和包含等处理。 在本文中,我们将介绍嵌入式C预处理器的基本概念和常用指令。

#define

宏定义是C预处理器最常用的指令之一。 通过宏定义,可以将一段代码片段替换为一个标识符。 例如,下面的代码定义了一个宏,将数字5替换为标识符MAX:

1#define MAX 5

宏定义还可以带参数,例如,下面的代码定义了一个带参数的宏,将两个数相加:

1 #define ADD(x, y) ((x) + (y))

在使用带参数的宏时,需要使用括号来保证优先级

1int a = 2, b = 3;
2int c = ADD(a, b); // c = 5

条件编译

条件编译是指根据不同的条件编译不同的代码。 在嵌入式系统开发中,经常需要根据不同的平台或者编译器进行编译,或者在不同的环境中使用不同的代码。 条件编译可以通过以下指令实现:

1#if condition
2    code
3#elif condition
4    code
5#else
6    code
7#endif

#include

#include指令用于包含头文件。 头文件通常包含函数原型、宏定义等信息。 例如,包含stdio.h头文件

1#include

#undef

#undef指令用于取消宏定义。 例如,取消前面定义的“PI”宏:

1 #undef PI

这样,编译器在编译时就不再将所有出现的"PI"

#ifdef、#ifndef、#endif

#ifdef指令用于检查宏是否已经定义。 例如,如果已经定义了宏“DEBUG”,则编译以下代码:

1#ifdef DEBUG
2    printf("Debugging information:\\n");
3#endif

#ifndef指令与#ifdef相反,这两个指令通常与#endif指令一起使用。 用于检查宏是否没有被定义。 例如,如果宏“DEBUG”没有被定义,则编译以下代码:

1#ifndef DEBUG
2    printf("No debugging information available.\\n");
3#endif

#if、#elif、#else、#endif

#if指令用于条件编译。 例如,编译以下代码,如果x等于1,则编译“printf(”x is 1.\\n“)”代码:

1#if x == 1
2    printf("x is 1.\\n");
3#elif x == 2
4    printf("x is 2.\\n");
5#else
6    printf("x is neither 1 nor 2.\\n");
7#endif

#pragma

#pragma指令用于向编译器发出特定的指示,例如优化选项、警告选项等等。 例如,告诉编译器关闭警告:这样就可以关闭4018警告。

1#pragma warning(disable: 4018)
1#pragma pack(push, 1) // 设置内存对齐方式为1字节
2struct mystruct {
3    int a;
4    char b;
5    short c;
6};
7#pragma pack(pop) // 恢复默认的内存对齐方式

#line:

设置当前行号和文件名

1#line 42 "myheader.h" // 设置当前行号为42,文件名为myheader.h

#error:

输出错误信息并终止编译

1#if MAX_BUFFER_SIZE > 1024
2    #error "Buffer size too large."
3#endif

#FILE、#LINE、#DATE、#TIME:

预定义的宏

1printf("File: %s, Line: %d\\n", __FILE__, __LINE__); // 输出当前文件名和行号
2printf("Compile time: %s %s\\n", __DATE__, __TIME__); // 输出编译时间
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18297

    浏览量

    222205
  • 嵌入式
    +关注

    关注

    4983

    文章

    18295

    浏览量

    288575
  • 指令
    +关注

    关注

    1

    文章

    580

    浏览量

    35379
  • 编译器
    +关注

    关注

    1

    文章

    1577

    浏览量

    48627
  • 宏定义
    +关注

    关注

    0

    文章

    48

    浏览量

    8927
收藏 人收藏

    评论

    相关推荐

    【下载】《嵌入式C编程与Atmel.AVR》

    对Atmel AVR RISC处理器的介绍,读者会立即进入嵌入式C语言教程之中。在本书中,读者将学习C语言的变量和常量、运算符和表达式、控制语句、指针和数组、存储
    发表于 01-11 18:02

    【下载】《嵌入式C编程与Atmel AVR》

    对Atmel AVR RISC处理器的介绍,读者会立即进入嵌入式C语言教程之中。在本书中,读者将学习C语言的变量和常量、运算符和表达式、控制语句、指针和数组、存储
    发表于 01-31 18:06

    【下载】《嵌入式系统设计与实例开发:基于ARM微处理器与μC/OS-2实时操作系统》

    `内容简介  本书是《嵌入式系统设计与实例开发》一书的第3版,其特点是体系结构完整、基本概念清晰,易读易学。本书主要以ARM9嵌入式微处理器与?C/OS-II实时操作系统作为教学对象,
    发表于 02-01 17:10

    【下载】《 嵌入式系统设计与实例开发:基于ARM微处理器与μC/OS-2实时操作系统》

    `内容简介  本书是《嵌入式系统设计与实例开发》一书的第3版,其特点是体系结构完整、基本概念清晰,易读易学。本书主要以ARM9嵌入式微处理器与?C/OS-II实时操作系统作为教学对象,
    发表于 03-01 17:26

    嵌入式系统基本概念概述

    文章目录嵌入式系统概述基本概念嵌入式系统的发展发展历史发展趋势组成结构设备驱动层硬件抽象层HAL板级支持包BSP设备驱动程序实时操作系统RTOSOS的应用程序接口API应用程序APP嵌入式
    发表于 07-16 08:15

    嵌入式基本概念及其应用

    文章目录系统移植概述及环境搭建嵌入式基本概念嵌入式系统的应用领域什么是嵌入式系统用嵌入式系统硬件组成部分通用
    发表于 10-27 07:59

    嵌入式系统常用指令集有哪些

    嵌入式系统常用指令集表格整理一、ARM处理器指令集二、ARM汇编语言ARM处理器专场(以下所有表
    发表于 10-27 07:53

    嵌入式Linux开发的基本概念

    嵌入式Linux开发前,你可能需要知道这些基本概念 作者之前编写了一系列嵌入式Linux的开发文档: 关注公众号【微联智控】,并回复【嵌入式Linux资料】,可获取以上pdf文档​的下
    发表于 11-04 08:05

    嵌入式系统的基本概念及特点

    嵌入式系统概述基本概念由来发展历史分类及特点基本概念由来发展历史分类及特点
    发表于 11-08 09:13

    嵌入式处理器的分类

    1.简介. ARM 是一个CPU内核. ARM是"Advanced RISC Machine"的缩写. ARM处理器本身是32位设计,但也配备16位指令嵌入式处理器
    发表于 11-09 07:08

    嵌入式软件的基本构成以及功能

    1:嵌入式系统的基本概念嵌入式软件的基本构成以及功能;能画出简单的嵌入式系统设计框图,举例说明嵌入式应用。
    发表于 12-14 08:30

    调试嵌入式处理器常用的方法有哪些?

    调试嵌入式处理器常用的方法有哪些?
    发表于 12-24 06:08

    服务嵌入式SDK的基本概念都有哪些呢

    服务嵌入式SDK的基本概念都有哪些呢?什么是差分账号?有何应用?
    发表于 12-27 07:59

    嵌入式系统基本概念(硬件篇)

    标题嵌入式系统基本概念学习(一)嵌入式系统: 硬件子系统、软件子系统。硬件子系统包括:嵌入式处理器、存储器、I/O系统、附属电路。一、
    发表于 10-20 17:06 17次下载
    <b class='flag-5'>嵌入式</b>系统<b class='flag-5'>基本概念</b>(硬件篇)

    介绍嵌入式C预处理器基本概念常用指令

    嵌入式系统开发中,C预处理器是非常重要的一部分,可以在编译之前对源代码进行宏替换、条件编译和包含等处理
    发表于 05-20 15:14 366次阅读