Enum in C,C++

C(C11以上):

第一种方式:

/**
 * @file duLangMap.h
 * @author geovindu,Geovin Du(geovindu@163.com)
 * @brief vscode c11
 * @version 0.1
 * @date 2023-12-18
 *
 * @copyright Copyright (c) 站在巨人的肩膀上 Standing on the Shoulders of Giants 2023 
 *
 */
#ifndef DULANGMAP_H
#define DULANGMAP_H
  
#define ChinseLangsList \
        DUX(afdu) \
        DUX(aldu) \
        DUX(ardu) \
        DUX(azdu) \
        DUX(bgdu) \
        DUX(cadu) \
        DUX(czdu) \
        DUX(dadu) \
        DUX(dedu) \
        DUX(eldu) \
        DUX(endu) \
        DUX(eudu) \
        DUX(fadu) \
        DUX(fidu) \
        DUX(frdu) \
        DUX(gldu) \
        DUX(hedu) \
        DUX(hidu) \
        DUX(hrdu) \
        DUX(hudu) \
        DUX(iddu) \
        DUX(itdu) \
        DUX(jadu) \
        DUX(krdu) \
        DUX(ladu) \
        DUX(ltdu) \
        DUX(mkdu) \
        DUX(nodu) \
        DUX(nldu) \
        DUX(pldu) \
        DUX(ptdu) \
        DUX(pt_brdu) \
        DUX(rodu) \
        DUX(rudu) \
        DUX(svdu) \
        DUX(sedu) \
        DUX(skdu) \
        DUX(sldu) \
        DUX(spdu) \
        DUX(esdu) \
        DUX(srdu) \
        DUX(thdu) \
        DUX(trdu) \
        DUX(uadu) \
        DUX(ukdu) \
        DUX(vidu) \
        DUX(zh_cndu) \
        DUX(zh_twdu) \
        DUX(zudu)
  
typedef enum
{
  #define DUX(name) name,
    ChinseLangsList
  #undef DUX
    Chinse_Count
} numbers_t;
  
/**
 * @brief
 *
 */
static const char* LangDuToString[Chinse_Count] =
{
  #define DUX(name) [name] = #name,
    ChinseLangsList
  #undef DUX
};
#endif

第二种试:

/**
 * @file LanguageList.h
 * @author geovindu,Geovin Du,涂聚文 (geovindu@163.com)
 * @brief 
 * IDE: vscode c11
 * @version 0.1
 * @date 2023-12-18
 *
 * @copyright Copyright (c) 站在巨人的肩膀上 Standing on the Shoulders of Giants 2023
 *
 */
 
#ifndef LANGUAGELIST_H
#define LANGUAGELIST_H
  
  
#define EnumLangTypeCase(x)   case x: return(#x);
  
/**
 * @brief      语种类型
 *
 */
enum DuLang
{
  
        af= 0,// Afrikaans
        al=1 ,// Albanian
        ar=2 ,// Arabic
        az=3 ,// Azerbaijani
        bg=4 ,// Bulgarian
        ca=5 ,// Catalan
        cz=6 ,// Czech
        da=7 ,// Danish
        de=8 ,// German
        el=9 ,// Greek
        en=10 ,// English
        eu=11 ,// Basque
        fa=12 ,// Persian (Farsi)
        fi=13,// Finnish
        fr=14,// French
        gl=15 ,// Galician
        he=16 ,// Hebrew
        hi=17,// Hindi
        hr=18 ,// Croatian
        hu=19,// Hungarian
        id=20,// Indonesian
        it=21,// Italian
        ja=22 ,// Japanese
        kr=23 ,// Korean
        la=24,// Latvian
        lt=25,// Lithuanian
        mk=26 ,// Macedonian
        no=27 ,// Norwegian
        nl=28 ,// Dutch
        pl=29,// Polish
        pt=30,// Portuguese
        pt_br=31,// Português Brasil
        ro=32,// Romanian
        ru=33,// Russian
        sv=34 ,// se Swedish
        se=35,
        sk=36 ,// Slovak
        sl=37 ,// Slovenian
        sp=38 ,// es Spanish
        es=39,
        sr=40 ,// Serbian
        th=41 ,// Thai
        tr=42,// Turkish
        ua=43,// uk Ukrainian
        uk=44,
        vi=45,// Vietnamese
        zh_cn=46 ,// Chinese Simplified
        zh_tw=47 ,// Chinese Traditional
        zu=48  // Zulu
};
  
/**
 * @brief     
 *
 */
static inline const char *LangtoString(enum DuLang type)
{
    switch (type){
        EnumLangTypeCase(af)// Afrikaans
        EnumLangTypeCase(al)// Albanian
        EnumLangTypeCase(ar)// Arabic
        EnumLangTypeCase(az)// Azerbaijani
        EnumLangTypeCase(bg)// Bulgarian
        EnumLangTypeCase(ca)// Catalan
        EnumLangTypeCase(cz)// Czech
        EnumLangTypeCase(da)// Danish
        EnumLangTypeCase(de)// German
        EnumLangTypeCase(el)// Greek
        EnumLangTypeCase(en)// English
        EnumLangTypeCase(eu)// Basque
        EnumLangTypeCase(fa)// Persian (Farsi)
        EnumLangTypeCase(fi)// Finnish
        EnumLangTypeCase(fr)// French
        EnumLangTypeCase(gl)// Galician
        EnumLangTypeCase(he)// Hebrew
        EnumLangTypeCase(hi)// Hindi
        EnumLangTypeCase(hr)// Croatian
        EnumLangTypeCase(hu)// Hungarian
        EnumLangTypeCase(id)// Indonesian
        EnumLangTypeCase(it)// Italian
        EnumLangTypeCase(ja)// Japanese
        EnumLangTypeCase(kr)// Korean
        EnumLangTypeCase(la)// Latvian
        EnumLangTypeCase(lt)// Lithuanian
        EnumLangTypeCase(mk)// Macedonian
        EnumLangTypeCase(no)// Norwegian
        EnumLangTypeCase(nl)// Dutch
        EnumLangTypeCase(pl)// Polish
        EnumLangTypeCase(pt)// Portuguese
        EnumLangTypeCase(pt_br)// Português Brasil
        EnumLangTypeCase(ro)// Romanian
        EnumLangTypeCase(ru)// Russian
        EnumLangTypeCase(sv)// se Swedish
        EnumLangTypeCase(se)
        EnumLangTypeCase(sk)// Slovak
        EnumLangTypeCase(sl)// Slovenian
        EnumLangTypeCase(sp)// es Spanish
        EnumLangTypeCase(es)
        EnumLangTypeCase(sr)// Serbian
        EnumLangTypeCase(th)// Thai
        EnumLangTypeCase(tr)// Turkish
        EnumLangTypeCase(ua)// uk Ukrainian
        EnumLangTypeCase(uk) //
        EnumLangTypeCase(vi)// Vietnamese
        EnumLangTypeCase(zh_cn)// Chinese Simplified
        EnumLangTypeCase(zh_tw)// Chinese Traditional
        EnumLangTypeCase(zu)// Zulu
    }
    return "nodata";
}
  
#endif

调用:

#include "include/duLangMap.h"
#include "include/LanguageList.h"
 
 
int main()
{
 
 printf("hello world, c \n");
    printf("你好,中国\n");
 
     //简体中文 46
    printf("%s\n",LangtoString(46));
    printf("%s\n",LangtoString(zh_cn));
  
    printf("%s\n",LangDuToString[2]);
    printf("%s\n",LangDuToString[zh_cndu]);
    return 0
}

输出:

C++(C++14以上):

第一种方式:

/*****************************************************************//**
 * \file   LanguageList.h
 * \brief
 *  https://belaycpp.com/2021/08/24/best-ways-to-convert-an-enum-to-a-string/
 * \ IDE  vs 2022 C++ 20
 * \author geovindu
 * \date   December 18 2023
 * \copyright   geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants
 *********************************************************************/
#pragma once
  
#ifndef LANGUAGELIST_H
#define LANGUAGELIST_H
  
  
#include <iostream>
  
  
/**
 * \brief
 *
 */
enum class Lang  //:string .net 8
{
    af,// Afrikaans
    al,// Albanian
    ar,// Arabic
    az,// Azerbaijani
    bg,// Bulgarian
    ca,// Catalan
    cz,// Czech
    da,// Danish
    de,// German
    el,// Greek
    /// <summary>
    /// 英文
    /// </summary>
    en,// English
    eu,// Basque
    fa,// Persian (Farsi)
    fi,// Finnish
    fr,// French
    gl,// Galician
    he,// Hebrew
    hi,// Hindi
    hr,// Croatian
    hu,// Hungarian
    id,// Indonesian
    it,// Italian
    ja,// Japanese
    kr,// Korean
    la,// Latvian
    lt,// Lithuanian
    mk,// Macedonian
    no,// Norwegian
    nl,// Dutch
    pl,// Polish
    pt,// Portuguese
    pt_br,// Português Brasil
    ro,// Romanian
    ru,// Russian
    sv,// se Swedish
    se,
    sk,// Slovak
    sl,// Slovenian
    sp,// es Spanish
    es,
    sr,// Serbian
    th,// Thai
    tr,// Turkish
    ua,// uk Ukrainian
    uk,
    vi,// Vietnamese
    /// <summary>
    /// 简体中文
    /// </summary>
    zh_cn,// Chinese Simplified
    /// <summary>
    /// 繁体中文
    /// </summary>
    zh_tw,// Chinese Traditional
    zu// Zulu
  
};
  
/**
 * \brief
 *
 * \param l
 * \return
 */
const char* LangToString(Lang l) noexcept
{
    switch (l)
    {
        case Lang::af: return "af";// Afrikaans
        case Lang::al: return "al";// Albanian
        case Lang::ar: return "ar";// Arabic
        case Lang::az: return "az";// Azerbaijani
        case Lang::bg: return "bg";// Bulgarian
        case Lang::ca: return "ca";// Catalan
        case Lang::cz: return "cz";// Czech
        case Lang::da: return "da";// Danish
        case Lang::de: return "de";// German
        case Lang::el: return "el";// Greek
        case Lang::en: return "en";// English
        case Lang::eu: return "eu";// Basque
        case Lang::fa: return "fa";// Persian (Farsi)
        case Lang::fi: return "fi";// Finnish
        case Lang::fr: return "fr";// French
        case Lang::gl: return "gl";// Galician
        case Lang::he: return "he";// Hebrew
        case Lang::hi: return "hi";// Hindi
        case Lang::hr: return "hr";// Croatian
        case Lang::hu: return "hu";// Hungarian
        case Lang::id: return "id";// Indonesian
        case Lang::it: return "it";// Italian
        case Lang::ja: return "ja";// Japanese
        case Lang::kr: return "kr";// Korean
        case Lang::la: return "la";// Latvian
        case Lang::lt: return "lt";// Lithuanian
        case Lang::mk: return "mk";// Macedonian
        case Lang::no: return "no";// Norwegian
        case Lang::nl: return "nl";// Dutch
        case Lang::pl: return "pl";// Polish
        case Lang::pt: return "pt";// Portuguese
        case Lang::pt_br: return "pt_br";// Português Brasil
        case Lang::ro: return "ro";// Romanian
        case Lang::ru: return "ru";// Russian
        case Lang::sv: return "sv";// se Swedish
        case Lang::se: return "se";
        case Lang::sk: return "sk";// Slovak
        case Lang::sl: return "sl";// Slovenian
        case Lang::sp: return "sp";// es Spanish
        case Lang::es: return "es";
        case Lang::sr: return "sr";// Serbian
        case Lang::th: return "th";// Thai
        case Lang::tr: return "tr";// Turkish
        case Lang::ua: return "ua";// uk Ukrainian
        case Lang::uk: return "uk";
        case Lang::vi: return "vi";// Vietnamese
        case Lang::zh_cn: return "zh_cn";// Chinese Simplified
        case Lang::zh_tw: return "zh_tw";// Chinese Traditional
        case Lang::zu: return "zu";// Zulu
        default: throw std::invalid_argument("nodata");
    }
}
  
  
#endif

调用:

#include "LanguageList.h"
  
using namespace std;
  
int main()
{
  
  
    std::cout << "Hello World!涂聚文 Geovin Du\n";
    std::cout<< LangToString(Lang::zh_cn)<< std::endl;
    return 0;
  
}

第二种方式:

/*****************************************************************//**
 * \file   DuLanguage.h
 * \brief  语言种类
 *
 * \ IDE  vs 2022 C++ 20
 * \author geovindu
 * \date   December 18 2023
 * \copyright   geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants
 *********************************************************************/
#pragma once
  
#ifndef DULANGUAGE_H
#define DULANGUAGE_H
  
  
#include <iostream>
  
/**
 * @brief .
 */
#define DuLang(name, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28,v29,v30,v31,v32,v33,v34,v35,v36,v37,v38,v39,v40,v41,v42,v43,v44,v45,v46,v47,v48,v49)\
    enum name { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28,v29,v30,v31,v32,v33,v34,v35,v36,v37,v38,v39,v40,v41,v42,v43,v44,v45,v46,v47,v48,v49 };\
    const char *name##Strings[] = { #v1, #v2, #v3, #v4, #v5, #v6, #v7, #v8, #v9, #v10,#v11,#v12,#v13,#v14,#v15,#v16,#v17,#v18,#v19,#v20,#v21,#v22,#v23,#v24,#v25,#v26,#v27,#v28,#v29,#v30,#v31,#v32,#v33,#v34,#v35,#v36,#v37,#v38,#v39,#v40,#v41,#v42,#v43,#v44,#v45,#v46,#v47,#v48,#v49 };\
    const char *name##ToString(int value) { return name##Strings[value]; }
  
  
/**
 * @brief 语言类型.
 */
DuLang(dLang, af,// Afrikaans
    al,// Albanian
    ar,// Arabic
    az,// Azerbaijani
    bg,// Bulgarian
    ca,// Catalan
    cz,// Czech
    da,// Danish
    de,// German
    el,// Greek
    /**
     * \brief 英语.
     */
    en,// English
    eu,// Basque
    fa,// Persian (Farsi)
    fi,// Finnish
    fr,// French
    gl,// Galician
    he,// Hebrew
    hi,// Hindi
    hr,// Croatian
    hu,// Hungarian
    id,// Indonesian
    it,// Italian
    ja,// Japanese
    kr,// Korean
    la,// Latvian
    lt,// Lithuanian
    mk,// Macedonian
    no,// Norwegian
    nl,// Dutch
    pl,// Polish
    pt,// Portuguese
    pt_br,// Português Brasil
    ro,// Romanian
    ru,// Russian
    sv,// se Swedish
    se,
    sk,// Slovak
    sl,// Slovenian
    sp,// es Spanish
    es,
    sr,// Serbian
    th,// Thai
    tr,// Turkish
    ua,// uk Ukrainian
    uk,
    vi,// Vietnamese
    /**
    * @brief 简体中文.
    */
    zh_cn,// Chinese Simplified
    /**
     * @brief 繁体中文.
     */
    zh_tw,// Chinese Traditional
    zu// Zulu
);
  
  
  
  
  
#endif

调用:

#include "DuLanguage.h"
  
using namespace std;
  
int main()
{
  
  
    std::cout << "Hello World!涂聚文 Geovin Du\n";
    //int a = 2;
    //std::cout<< LangToString(Lang::zh_cn)<< std::endl;
  
    std::cout << dLangToString(dLang::zh_cn)<< std::endl;
    return 0;
}

第三种方式:

/*****************************************************************//**
 * \file   ChineseLang.h
 * \brief  语言类型枚举
 * https://stackoverflow.com/questions/201593/is-there-a-simple-way-to-convert-c-enum-to-string
 * \ IDE  vs 2022 C++ 20
 * \author geovindu
 * \date   December 18 2023
 * \copyright   geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants
 *********************************************************************/
#pragma once
#ifndef CHINESELANG_H
#define CHINESELANG_H
  
  
 /**
  * @brief,不可以再用.如果有类似的语言类型枚举,这个不可以用,互相冲突
  * 格式关键
  */
#define DEF_ChinseLang  \
       Du(af, "af") \
        Du(al, "al") \
        Du(ar, "ar") \
        Du(az, "az") \
        Du(bg, "bg") \
        Du(ca, "ca") \
        Du(cz, "cz") \
        Du(da, "da") \
        Du(de, "de") \
        Du(el, "el") \
        Du(en, "en") \
        Du(eu, "eu") \
        Du(fa, "fa") \
        Du(fi, "fi") \
        Du(fr, "fr") \
        Du(gl, "gl") \
        Du(he, "he") \
        Du(hi, "hi") \
        Du(hr, "hr") \
        Du(hu, "hu") \
        Du(id, "id") \
        Du(it, "it") \
        Du(ja, "ja") \
        Du(kr, "kr") \
        Du(la, "la") \
        Du(lt, "lt") \
        Du(mk, "mk") \
        Du(no, "no") \
        Du(nl, "nl") \
        Du(pl, "pl") \
        Du(pt, "pt") \
        Du(pt_br, "pt_br") \
        Du(ro, "ro") \
        Du(ru, "ru") \
        Du(sv, "sv") \
        Du(se, "se") \
        Du(sk, "sk") \
        Du(sl, "sl") \
        Du(sp, "sp") \
        Du(es, "es") \
        Du(sr, "sr") \
        Du(th, "th") \
        Du(tr, "tr") \
        Du(ua, "ua") \
        Du(uk, "uk") \
        Du(vi, "vi") \
        Du(zh_cn, "zh_cn") \
        Du(zh_tw, "zh_tw") \
        Du(zu, "zu")
  
  
enum ChinseLang {
#define Du(name, str) name,
    DEF_ChinseLang
#undef Du
    CHINESE_count
};
  
/**
 * @brief.
 *
 * \param c
 * \return
 */
const char* ChinseLangToStr(ChinseLang c) {
    switch (c) {
#define Du(name, str) case name : return str;
        DEF_ChinseLang
#undef Du
    default:
        return "";
    }
}
  
  
#endif

调用:

#include "ChineseLang.h"
  
  
int main()
{
  
  
    std::cout << "Hello C++ World! 涂聚文 Geovin Du\n";
  
    std::cout << ChinseLangToStr(ChinseLang(2)) << std::endl; //0 索引开始
    std::cout << ChinseLangToStr(ChinseLang(al)) << std::endl;
     
  
    return 0;
}

主要参考:

https://en.cppreference.com/w/c/preprocessor/replace
https://codereview.stackexchange.com/questions/237410/macro-to-generate-an-enum-and-an-array-of-strings
https://codereview.stackexchange.com/questions/278448/discussing-approaches-for-converting-enum-to-string
https://kubyshkin.name/posts/c-language-enums-tips-and-tricks/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/256310.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RK3568 android11 调试mipi摄像头 gc2093

一&#xff0c;摄像头简介 GC2093是一个高质量的1080P CMOS图像传感器&#xff0c;用于安全相机产品、数码相机产品和手机相机应用程序。包含了一个1920H x 1080V像素阵列、片上10位ADC和图像信号处理器。高性能和低功耗功能的全面集成使GC2093最适合设计&#xff0c;减少了实…

TikTok矩阵玩法分享,如何建立TikTok矩阵?

矩阵是在 TikTok 上非常常见的营销方式&#xff0c;很多卖家想要通过矩阵化运营快速涨粉。但要想做好TikTok矩阵&#xff0c;需要有明确的方向和计划。下面东哥我将分享一些做TikTok矩阵的玩法&#xff0c;帮助大家更好地搭建自己的TikTok矩阵。 了解TikTok矩阵 TikTok矩阵是一…

vue导出element表格,xlsx和xlsx-style生成xlsx文件并修改样式

1.下载依赖 npm install xlsx --save npm install file-saver --save npm install xlsx-style --save2.先修改xlsx-style的源码&#xff0c;一旦引入xlsx-style则会报错 xlsx-style使用中常见问题及解决办法&#xff1a; xlsx-style使用中常见问题及解决办法-CSDN博客 在\n…

A01、深入了解性能优化

1、常用性能评价/测试指标 1.1、响应时间 提交请求和返回该请求的响应时间之间使用的时间&#xff0c;一般比较关注平均响应时间。常用操作的响应时间列表&#xff1a; 操作响应时间打开一个站点几秒数据库查询一条记录&#xff08;有索引&#xff09;十几毫秒机械磁盘一次寻…

数据结构:图解手撕B-树

文章目录 为什么需要引入B-树&#xff1f;B树是什么&#xff1f;B树的插入分析 本篇总结的内容是B-树 为什么需要引入B-树&#xff1f; 回忆一下前面的搜索结构&#xff0c;有哈希&#xff0c;红黑树&#xff0c;二分…等很多的搜索结构&#xff0c;而实际上这样的结构对于数…

(C++)vector--迭代器失效问题

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言 迭代器的作用就是能够让算法不用关心底层数据结构&#xff0c;其底层实际上就是一个指针&#xff0c;或者对指针做了封装&#xff0c;比如vector和string的迭代器就是原生态指针T*&#xff0c;因此迭代器失效&#xff…

Python爬虫-解决使用requests,Pyppeteer,Selenium遇到网站显示“您的连接不是私密连接”的问题|疑难杂症解决(2)

前言 本文是该专栏的第13篇,后面会持续分享python爬虫案例干货,记得关注。 相信很多同学在处理爬虫项目的时候,会遇到一些网站出现如下图所示的情况: 就是当你不论是使用requests进行协议请求,还是使用自动化框架pyppeteer或者selenium都会出现上图中的情况。这相信会或多…

element组件库的日期选择器如何限制?

本次项目中涉及到根据日期查找出来的数据进行调整,所以修改的数据必须是查找范围内的数据.需要对调整数据的日期进行限制,效果如下: 首先我们使用了element 组件库的日期选择器,其中灌完介绍, picker-options中函数disabledDate可以设置禁用状态,代码如下: <el-date-pickerv…

K8s内容器拓扑图工具

1.背景&#xff1a;随着线上容器越来越多&#xff0c;需要一个可视化的方式展示各个容器之间的拓扑图。 2.需求&#xff1a;轻量级&#xff0c;部署方便。 3.部署 helm repo add groundcover https://helm.groundcover.com/ helm repo update helm install caretta --namespa…

初步认识spring,一问掌握spring应用知识文集。

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

关于“Python”的核心知识点整理大全26

目录 10.3.9 决定报告哪些错误 10.4 存储数据 10.4.1 使用 json.dump()和 json.load() number_writer.py number_reader.py 10.4.2 保存和读取用户生成的数据 对于用户生成的数据&#xff0c;使用json保存它们大有裨益&#xff0c;因为如果不以某种方式进行存储&#xf…

opencv 入门二(播放视频)

环境配置如下&#xff1a; opencv 入门一&#xff08;显示一张图片&#xff09;-CSDN博客 用OpenCV播放视频就像显示图像一样简单。唯一不同的是&#xff0c;我们需要某种循环来读取视频序列中的每一帧。 源码如下&#xff1a; #include <iostream> #include <str…

主馆位置即将售罄“2024北京国际信息通信展会”众多知名企聚京城

2024北京国际信息通信展&#xff0c;将于2024年9月份在北京国家会议中心盛大召开。作为全球信息通信技术领域的重要盛会&#xff0c;此次展会将汇集业内顶尖企业&#xff0c;展示最新的技术成果和产品。 目前&#xff0c;主馆位置即将售罄&#xff0c;华为、浪潮、中国移动、通…

PIC单片机项目(5)——基于PIC16F877A的多功能防盗门

1.功能设计 本次设计的功能如下&#xff1a;如果红外对管检测到有人经过&#xff0c;LCD1602可以显示&#xff0c;我设计的是显示字符串“someone”。 如果有人强行破门&#xff0c;FSR402压力传感器会检测到压力过大&#xff0c;然后触发蜂鸣器报警&#xff0c;LCD1602也显示“…

EMC测试与整改实践?|深圳比创达电子

电磁兼容(EMC)测试和整改是当今社会对电磁兼容(EMC)意识日益深入的表现&#xff0c;EMC测试与整改随着社会对电磁环境要求的不断提高&#xff0c;越来越受到重视&#xff0c;下面就EMC测试与整改实践进行一下详细介绍。 一、什么是EMC测试&#xff1f; EMC测试是指在一定的电…

rabbitmq界面主要参数分析

本篇主要分析rabbitmq broker界面参数 rabbitmq界面主要参数分析 1、connections User Name: user - 连接所使用的用户名。 State: running - 连接当前的状态&#xff0c;这里表明连接是活动的。 SSL/TLS: ○ - 表示这个连接没有使用SSL/TLS加密。 内部或受信任的网络中可能…

C# pictureBox显示一张图片,我想先释放这个图片以免占用无法修改,(旋转)改完再显示这张图片

效果 public static bool RotateFlip(MyDel Log, string fileName){try{string tempPath Path.GetTempFileName();using (Bitmap bmp new Bitmap(fileName)){float resolution 600; //x,y必须为这个数 误差小于-1bmp.RotateFlip(RotateFlipType.Rotate90FlipNone);bmp.Save(…

SQL Server 查询处理过程

查询处理--由 SQL Server 中的关系引擎执行&#xff0c;它获取编写的 T-SQL 语句并将其转换为可以向存储引擎发出请求并检索所需结果的过程。 SQL Server 需要四个步骤来处理查询&#xff1a;分析、代化、优化和执行。 前三个步骤都由关系引擎执行&#xff1b;第三步输出的是…

前端开发新趋势:Web3、区块链和虚拟现实

目录 前言 Web3&#xff1a;下一代互联网 区块链技术 去中心化应用程序&#xff08;DApps&#xff09; 区块链&#xff1a;重塑数字世界 数字钱包 NFT&#xff08;非同质化代币&#xff09; 虚拟现实&#xff1a;沉浸式体验 WebVR和WebXR 三维图形 新挑战与机会 性…

众和策略:短线交易看什么?短线交易看什么指标?

短线交易看什么&#xff1f; 1、k线 当k线出现黄昏十字星、黑乌鸦、乌云盖顶等卖出形状图时&#xff0c;是一种卖出信号&#xff0c;当k线出现早晨十字星、红三兵、等买入形状图时&#xff0c;是一种买入信号。 2、均线 当均线出现死叉、空头摆放时是一种卖出信号&#xff…