C语言基础 -宏字符串比较

背景

有些业务场景,当使用C语言的宏进行隔离时,想做到根据宏的字符串来做一些比较处理,可以如下实现;

代码

#include <stdio.h>

#define CM_PRODUCT "CMV888" // 定义宏字符串

int main() {
    #if defined(CM_PRODUCT)
        #if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || (defined(__cplusplus) && __cplusplus >= 201103L)
            #if (strcmp(CM_PRODUCT, "CMV888") == 0) || (strcmp(CM_PRODUCT, "CMV666") == 0)
                printf("CM_PRODUCT is either \"CMV888\" or \"CMV666\"\n");
            #else
                printf("CM_PRODUCT is not \"CMV888\" or \"CMV666\"\n");
            #endif
        #else
            printf("C99 or C++11 support is required for string comparison\n");
        #endif
    #else
        printf("CM_PRODUCT macro is not defined\n");
    #endif

    return 0;
}

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在单片机开发中,使用的是嵌入式 C 语言,它是标准的 C 语言的一个子集。以下是一些嵌入式 C 语言基础知识和常用的技巧: 1. 数据类型:嵌入式 C 语言支持标准的 C 数据类型,如整型 (`int`)、字符型 (`char`)、浮点型 (`float`) 等。此外,还有一些特定于嵌入式系统的数据类型,如无符号整型 (`unsigned int`)、无符号字符型 (`unsigned char`)、位域 (`bit-field`) 等。 2. 变量和常量:可以使用变量来存储和操作数据。在单片机开发中,常常需要定义特定的寄存器地址或引脚状态来表示硬件状态。常量是一个固定的值,可以用于初始化变量或进行比较操作。 3. 运算符:嵌入式 C 语言支持标准的算术运算符(`+`、`-`、`*`、`/`)和逻辑运算符(`&&`、`||`、`!`),可以用于数值计算和条件判断。 4. 控制流程:嵌入式 C 语言支持常见的控制流程语句,如条件语句 (`if-else`)、循环语句 (`for`、`while`、`do-while`) 和跳转语句 (`break`、`continue`、`return`)。这些语句用于根据条件执行不同的代码块、重复执行一段代码或跳转到指定的位置。 5. 函数:函数是 C 语言的重要组成部分,可以将一段代码封装成一个函数,方便重复使用和模块化编程。在嵌入式 C 语言中,函数的调用和定义与标准 C 语言相同。 6. 数组和指针:数组是一组相同类型的数据的集合,可以通过索引来访问其中的元素。指针是一个变量,存储另一个变量的内存地址。在嵌入式 C 语言中,数组和指针常常用于处理连续的内存块,如缓冲区或外设寄存器。 7. 宏定义宏定义是一种用来定义常量或代码片段的预处理指令。通过宏定义,可以简化代码,提高代码的可读性和可维护性。 8. 编译器指令:编译器指令用于控制编译器的行为,包括优化选项、内存对齐、内存映射等。这些指令可以在源代码中使用特定的语法进行设置。 除了以上基础知识,还需要了解单片机的特定功能和寄存器操作,例如引脚控制、定时器、中断、串口通信等。这些都是嵌入式 C 语言开发中常用的技巧和概念。 最重要的是,要熟悉所使用的单片机的数据手册和技术文档,了解其特定的寄存器和功能,以便正确地配置和操作单片机。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值