尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
C语言语法笔记
C语言语法笔记常见的switch caseswitch(opcode){ case 0b00000000: //每一个都要带break; add(inst); //别忘了default break; //每个情况前面都有case case 0b10000000: //默认十进制,二进制十六进制要加0b0x li(inst); break; case 0b11000000: bner(inst); break; default: log_err(不存在指令); break; }位操作int a; a 2; //a 0b100 - 0b11100uint32_t b; b 2; //b 0b100 - 0b00100二者区别是int带有符号位,右移会自动符号拓展,高位与符号位相同imm 20 20; //利用上述特性,先将int型立即数移到最高位,再右移,实现自动符号扩展uint32_t a1; uint32_t a2; uint32_t a3; uint32_t a4; uint32_t a; a ((a1 0xff) 24) | ((a2 0xff) 16) | ((a3 0xff) 8) | (a4 0xff); //通过移位操作和按位或按位与可实现位拼接 //!!!注意要加括号,的优先级最高-公式都加括号算术运算ab b (ab - g)(i / k); //C会把(ab - g)认为是函数 两个数相乘要加* ❌ ab b (ab - g) * (i / k); //不要忘了* ✅没见过的东西## #在C语言中##可以把左右拼接成一个新的标记#可以把变量内容转换成字符串A AM##1; //A AM1 string str #(1 2 3) //str 1 2 3在标准的 C 语言中{ … } 只是单纯的代码块没有返回值。但 GCC 扩展允许写 ({ 语句1; 语句2; 变量; })这个结构的返回值就是最后一行的那个变量。像是一个小函数?#define io_read(reg) \ ({ reg##_T __io_param; \ // 第1行 语句1 ioe_read(reg, __io_param); \ // 第2行 语句二 __io_param; }) // 第3行 返回值((handler_t)lut[reg])(buf); //可以拆成三部分lut[reg]从数组 lut 中取出第 reg 个元素。这个元素是一个函数指针指向某个函数的地址。(handler_t)这是一个强制类型转换。它把 lut[reg] 这个值强制转换成 handler_t 类型。(buf)是前面函数的参数void (*handler_t)(void *buf);指向一个接收handler_t参数、返回 void 的函数的指针。#define AM_DEVREG(id, reg, perm, ...) \ enum { AM_##reg (id) }; \ typedef struct { __VA_ARGS__; } AM_##reg##_T; //用这个宏定义了很多结构体 AM_DEVREG( 1, UART_CONFIG, RD, bool present);调用这个宏会生成对应的结构体,结构体名由拼接得来例如AM_DEVREG( 1, UART_CONFIG, RD, bool present);等价于typedef struct { bool present; }AM_UART_CONFIG_T;结果是AM_UART_CONFIG 1结构体有一个成员present
RELATED

相关推荐

变增益运算放大器(PGA)原理与应用:动态范围扩展与信号调理技术

变增益运算放大器(PGA)原理与应用:动态范围扩展与信号调理技术

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 变增益运算放大器(PGA)是模拟电路设计中的关键构建模块,它通过数字或模拟信号控制增益&#xff0c…

📅 2026/10/30 21:12:25
Linux md5sum 命令超全详解|文件校验 / 防篡改 / 批量验证一站式掌握

Linux md5sum 命令超全详解|文件校验 / 防篡改 / 批量验证一站式掌握

1. 命令简介 md5sum 是一个基于 MD5(Message-Digest Algorithm 5)报文摘要算法的文件完整性校验工具。它会对输入的数据计算出一个长度为 128 位(32 个十六进制字符)的哈希值,通常称为 “校验和” 或 “指纹”。 主要…

📅 2026/10/13 1:12:17
Unity手绘熔岩纹理包应用指南:从材质配置到地形绘制的全流程实践

Unity手绘熔岩纹理包应用指南:从材质配置到地形绘制的全流程实践

1. 项目概述:为什么你需要一套手绘熔岩纹理包?最近在做一个火山主题的独立游戏,场景里需要大量的熔岩地形和岩浆效果。一开始我尝试用程序化生成和PBR材质去模拟,结果发现效果要么太“假”,要么性能开销巨大&#xff0…

📅 2026/9/26 7:14:11
MORE NEWS

更多资讯

📰

QCOM_V1.6深度解析:面向通信模组的协议级串口调试工作流

1. 这不是“下载链接”,而是一套被低估的串口调试工作流很多人看到“QCOM_V1.6安装包免费下载”这个标题,第一反应是点开找网盘链接、复制提取码、解压双击运行——然后发现界面卡顿、AT指令无响应、日志刷屏却找不到关键报错,最后默默卸载&a…

📰

STM32智慧仓库管理系统:从传感器到上位机的完整实现

简介:一份基于STM32的智慧仓库管理系统完整毕业设计源码包,面向正在准备毕设的计算机相关专业学生及需要项目实战的C语言学习者,也可直接用作课程设计或期末大作业。资源共403个文件,压缩包约15.47MB,核心代码以C语言源…

📰

Unity数字孪生机械臂控制:虚实联动通信层搭建与避坑指南

简介:这套资源围绕数字孪生、Unity与机械臂控制的虚实联动项目,面向Unity开发者、工业数字孪生学习者及自动化控制爱好者,帮助解决虚拟环境与真实机械臂之间双向通信与同步控制的落地问题。资源中涉及三维场景搭建、机械臂模型处理、滑动条UI…

📰

OpenJarvis:本地AI智能体框架的隐私优先架构

1. OpenJarvis不是又一个“本地大模型运行器”,它是智能体架构范式的本地化重构你可能已经试过Ollama、LM Studio、Text Generation WebUI,甚至亲手编译过llama.cpp——它们都干同一件事:把大语言模型塞进你自己的电脑里跑起来。但OpenJarvis…

📰

桌面Agent语音本地化:端侧ASR的工程落地与信任基建

1. 这不是“加个麦克风”那么简单:为什么桌面 Agent 的语音能力卡在本地运行这一步最近刷技术社区,几乎每天都能看到新发布的桌面 Agent 项目——能自动整理邮件、能读取剪贴板内容、能调用本地软件执行任务,甚至能根据屏幕截图生成操作建议。…

📰

风光储孤岛微电网下垂控制建模设计及仿真搭建【附详细建模报告】

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 &#x1f381…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬