tag 标签: c语言

相关博文
  • 热度 2
    2024-4-16 17:03
    183 次阅读|
    0 个评论
    嵌入式开发中常用的C语言工具代码确实很重要。以下是一些利剑级别的C语言工具代码示例,以及它们的简要讲解。 1、循环队列(Circular Buffer) typedef struct { int buffer ; int head; int tail; int count; } CircularBuffer; void push(CircularBuffer *cb, int data) { count < SIZE) { head] = data; head + 1) % SIZE; count++; } } int pop(CircularBuffer *cb) { 0) { tail]; tail + 1) % SIZE; count--; return data; } return -1; // Buffer is empty } 循环队列是一种高效的数据结构,适用于缓冲区和数据流应用,例如串口通信接收缓冲。 2、断言 (Assertion) #define assert(expression) ((void)0) #ifndef NDEBUG #undef assert #define assert(expression) ((expression) ? (void)0 : assert_failed(__FILE__, __LINE__)) #endif void assert_failed(const char *file, int line) { printf("Assertion failed at %s:%d\n", file, line); // Additional error handling or logging can be added here } 断言用于在程序中检查特定条件是否满足,如果条件为假,会触发断言失败,并输出相关信息 3、位域反转 (Bit Reversal) unsigned int reverse_bits(unsigned int num) { unsigned int numOfBits = sizeof(num) * 8; unsigned int reverseNum = 0; for (unsigned int i = 0; i < numOfBits; i++) { if (num & (1 << i)) { reverseNum |= (1 << ((numOfBits - 1) - i)); } } return reverseNum; } 该函数将给定的无符号整数的位进行反转,可以用于某些嵌入式系统中的位级操作需求。 4、固定点数运算 (Fixed-Poin Arithmetic) typedef int16_t fixed_t; #define FIXED_SHIFT 8 #define FLOAT_TO_FIXED(f) ((fixed_t)((f) * (1 << FIXED_SHIFT))) #define FIXED_TO_FLOAT(f) ((float)(f) / (1 << FIXED_SHIFT)) fixed_t fixed_multiply(fixed_t a, fixed_t b) { FIXED_SHIFT); } 在某些嵌入式系统中,浮点运算会较慢或不被支持。因此,使用固定点数运算可以提供一种有效的浮点数近似解决方案。 5、字节序转换 (Endianness Conversion) 8) | (value << 8); } 用于在大端(Big-Endian)和小端(Little-Endian)字节序之间进行转换的函数。 6、位掩码 (Bit Masks) #define BIT_MASK(bit) (1 << (bit)) 用于创建一个只有指定位被置位的位掩码,可用于位操作。 7、计数器计数 (Timer Counting) #include void setup_timer() { // Configure timer settings } uint16_t read_timer() { return TCNT1; } 在AVR嵌入式系统中,使用计时器(Timer)来实现时间测量和定时任务。 8、二进制查找 (Binary Search) int binary_search(int arr == target) { return mid; } else if (arr < target) { left = mid + 1; } else { right = mid - 1; } } return -1; // Not found } 用于在已排序的数组中执行二进制查找的函数。 9、位集合 (Bitset) #include typedef struct { uint32_t bits; } Bitset; void set_bit(Bitset *bitset, int bit) { bits |= (1U << bit); } int get_bit(Bitset *bitset, int bit) { bit) & 1U; } 实现简单的位集合数据结构,用于管理一组位的状态。 这些代码示例代表了嵌入式开发中常用的一些利剑级别的C语言工具代码。它们在嵌入式系统开发中具有广泛的应用,有助于优化性能、节省资源并提高代码的可维护性。 来源地址: https://zhuanlan.zhihu.com/p/653484840 来源 | 知乎-晓亮Albert
  • 热度 6
    2023-9-4 10:04
    529 次阅读|
    0 个评论
    随着 2023.2 的发布, Klocwork 为 C 、 C++ 、 C# 、 Java 和 JavaScript 分析提供了更新和改进。 MISRA C:2012 AMD 2 覆盖率和 DISA STIG ASD C/C++ 高严重性规则覆盖率高达 83% 。还引入了针对 C 语言检查器的附加路径分析。 Validate 平台现在具有增强的问题浏览和筛选功能。 其他增强功能包括改进 Microsoft Visual Studio 插件和 Project Streams in Validate 的稳定性和性能。 审查 Validate 中的问题 现在,您可以通过查看、修改和导航问题搜索列表,更轻松地在 Validate 中查看问题,而无需离开 “Issue Details” 页面。 • 通过新的 “File Navigation” 窗格搜索单个文件并探索问题,该窗格启用在使用相同浏览器时在会话之间持久存在的配置。 其他 Validate 平台改进 • 使用 " 度量元 " 报告 设计器 在 Validate 中编辑阈值 和总度量值 报告定义。 • 利用新的命令行应用程序包,为 Validate 命令提供通用命名。 C/C++ 分析引擎 改进了 C/C++ 的语言功能覆盖率和缺陷检测: • 增强了对 C++14 和 C++17 分析的支持。 • 添加了几个 MISRA 规则并增加了 MISRA C : 2012 (最高 AMD 2 )的覆盖范围。 • 增加了对 DISA STIG 高严重性规则、 CERT 、 OWASP 和 CWE 的覆盖范围,包括为 2022 年 CWE Top 25 最危险的软件弱点添加分类法。 C# 分析引擎 改进了对 C# 8.0 语言规范的支持。新的语言功能支持包括: • 接口中的静态构造函数。 • 接口中的嵌套类型和运算符声明。 • 内插 verbatim 字符串。 • 范围和索引支持 … 和 ^ 运算符。 • 使用新引擎对 C# 检查程序进行额外的路径分析。 Java 分析引擎 扩展了 Java 14 语言规范的覆盖范围。新功能包括: • 改进路径分析检查程序对 Java 14 的支持。 • 100% 覆盖 Jakarta EE 。 JavaScript 分析引擎 • JavaScript 分析支持 . eslintignore 文件 • 用于指定项目目录的 kwjsspec 工具的新选项 ○ --project- dir 编码标准 Klocwork 2023.2 的新标准和扩展标准覆盖范围和 分类标准 : • CERT • CWE – 2022 CWE Top 25 最危险的软件弱点 • DISA STIG v 5 - C/C++ 高严重性规则高达 83% • MISRA – 改进了 MISRA C : 2012 AMD 2 覆盖范围(需要支持人员提供额外实用程序,以实现最大覆盖范围) • OWASP 产品体验改进 Microsoft Visual Studio 插件 使用 Visual Studio 扩展更快地开始分析。 • 在使用 kwcheck 命令作为外部分析引擎时,我们改进了 Visual Studio 扩展的构建规范生成性能。 项目流 改进了大量项目流的 Validate 平台的性能。 • 显示和使用项目流清单所需的时间大大减少。 第三方依赖项 • 软件包中包含 Apache Tomcat 和 Open JDK 的升级版本。 有关新增功能的更多详细信息,请参阅发行说明。 Klockwork 2023.2 的重要变化 许可证管理更改 自 2023.2 起, Klocwork 工具现在使用 Reprise 许可证管理器 ( RLM ) v15.0 。 • 重要提示:升级后的 RLM v15.0 服务器包含在 Klocwork 2023.2 安装中。任何早期的 RLM 服务器都需要升级到此版本才能与 Klocwork 2023.2 及更高版本配合使用。升级到 RLM v15.0 解决了在与服务器连接量较大的情况下 Validate 2023.1 的服务器稳定性可能出现的问题。 • 2022 许可证与 Klocwork 2023.2 不兼容。升级时,请联系 info@polelink.com 以获取新许可证。 2022.4 SR/ 补丁可用 已创建 2021.4 至 2022.4 的补丁,以解决自动删除版本中丢失的引用问题。 Klocwork 2023.1 及更高版本不受影响。 • 使用 2022.4 的所有客户都应升级到该软件的最新版本。 ➡ 体验最新版 Klcwork2023.2: info@polelink.com
  • 热度 6
    2022-10-24 10:51
    1361 次阅读|
    0 个评论
    Klocwork 专为企业 DevOps 和 DevSecOps 而构建,是首选的静态分析和 SAST 工具,用于保持高开发速度,同时还强制实施安全性和质量的持续合规性。在这里,我们分享了开发人员选择Klocwork的五大原因。 为什么安全性对软件开发至关重要? 安全性对于软件开发至关重要,因为黑客和网络犯罪分子一直在寻找将漏洞转化为利益的方法。强大的软件安全防御的一个关键部分是使用安全编码标准,这些标准是用于防止安全漏洞的规则和准则。 如果使用得当,安全编码标准可以检测、预防和消除可能危及安全性的漏洞。行业标准工具(特别是 SAST 工具)可以有效地实施标准,以帮助确保您的软件免受安全漏洞的侵害。 开发人员使用Klocwork实现安全性的五大原因 虽然开发人员最终选择Klocwork进行安全性的原因有很多,但以下是最常被引用的五个原因。 1. 深度覆盖 Klocwork深度覆盖了C,C++,C#,Java,JavaScript,Python和Kotlin的主要编码标准的规则。这包括安全编码标准和准则: CERT CWE OWASP DISA STIG 通过使用Klocwork来分析他们的代码库,开发人员能够更轻松地找到软件漏洞和错误。 此外, Klocwork还集成了 Secure Code Warrior Integration,使开发人员能够访问安全编码培训和其他软件安全工具。 2. 桌面工具套件优先考虑每个检查点的安全性 Klocwork desktop 是高度可定制的,并具有一套工具,可以在每个开发检查点优先考虑安全性,例如开发人员桌面,提交前测试,合并前测试和合并后报告。 这些工具使开发人员能够: • 在编写代码时发现缺陷。 • 签入整洁的代码。 • 定义 QA 和安全目标以及规则配置。 • 生成安全报告。 • 根据严重性、位置和生命周期确定缺陷的优先级。 • 使用智能排名根据缺陷可能性确定修复的优先级,当与问题严重性相结合时,可提供总体漏洞风险评分。 • 区分新问题和旧代码问题。 3. 差异分析 差异分析是一种“快速反馈”静态分析形式,它使用以前分析版本中的系统上下文数据来仅分析新的和已更改的文件。这种类型的分析为开发人员的新代码和变更代码,提供了最短的分析时间,同时还保持了分析数据的准确性和细节。开发人员不用等待几个小时,而是在几分钟或几秒钟内得到结果,这取决于代码变更程度。 在持续集成自动化中,Klocwork的差分分析为开发人员提供了更快的结果,因此可以更频繁地运行安全检查,例如在每次提交时进行检查。 4. 数据流分析 最难发现的问题是具有挑战性的,因为数据通常在函数之间流动并跨文件边界流动。Klocwork跟踪在方法、文件和模块之间流动的数据,以发现漏洞,例如使用受污染或未初始化的数据。 5. 创建自定义规则 Klocwork Checker Studio是一个GUI应用程序,它使开发团队可以使用其优雅的KAST表达式语言轻松实现自己的自定义编码标准。这使开发人员能够调用他们自己的代码库所独有的危险做法。 准备好使用 Klocwork 实现安全性了吗? 如果您已准备好亲眼看看 Klocwork 如何帮助您有效识别安全漏洞, ➡️ 注册免费Klocwork试用版 邮件至info@polelink.com
  • 热度 2
    2022-8-25 09:55
    542 次阅读|
    0 个评论
    飞凌嵌入式 OKMX8MP-C开发板采用NXP i.MX8M Plus高性能处理器开发 ,AI计算能力高达2.3TOPS,可满足轻量级边缘计算需求。同时灵活的I/O接口配置和先进丰富的多媒体资源,方便客户应用程序开发。 ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) 在OKMX8MP-C开发板中, 飞凌移植了OpenSSL工具 ,OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。 作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。 今天小编为大家分享一些 OpenSSL在OKMX8MP-C开发板上的简单应用 。 OpenSSL分为 交互模式 和 批处理模式 ,直接输入OpenSSL然后按回车键进入交互模式,输入带命令选项的OpenSSL进入批处理模式。 1 交互模式 ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) version: 用来打印版本以及 OpenSSL其他信息。 用法: version- 举例: version-a打印所有信息 ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) 版本号和版本发布日期: OpenSSL1.1.1g,2020年4月21日 使用库构建的选项: options 存储证书和私钥的目录: OPENSSLDIR passwd: 生成各种口令密文。 用法: opensslpasswd {password} 举例: passwd-cryp 默认选项,生成标准的unix口令密文。 ​ 编辑 添加图片注释,不超过 140 字(可选) passwd-1 生成md5口令密文。 ​ 编辑 添加图片注释,不超过 140 字(可选) DSA: 用于处理DSA密钥、格式转换和打印信息。 用法: openssldsa 举例: dsaparam -out dsaparam.pem 1024 生成DSA参数文件。 ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) gendsa-out dsakey.pem dsaparam.pem 根据DSA参数文件生成DSA密钥。 ​ 编辑 添加图片注释,不超过 140 字(可选) 以上就是交互模式的简单使用方式,下面小编来为大家介绍批处理模式下的一些功能。 2 批处理模式 生成密码功能 openssl rand: 用来产生伪随机字节 用法: openssl rand num -out file 写入文件 -base64 base64编码输出 -hex 16进制编码输出 举例: 以生成base64编码的随机数为例 ​ 编辑 添加图片注释,不超过 140 字(可选) 消息摘要算法应用 openssl dgst: 用于数据摘要 用法: openssl dgst 举例: 用SHA1算法计算文件openssl1.txt的哈希值。 ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) 用SHA1算法计算文件openssl1.txt的哈希值,输出到文件sha1.txt。 ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) 编解码应用 给文件openssl1.txt用base64编码,输出到文件jiami.txt。 ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) 最后,小编为大家介绍一种测试OpenSSL性能的方法。 OpenSSL性能测试 openssl speed: 此命令用于测试库的性能。 用法: openssl speed 测试生成不同的密钥的速度。 以RSA-2048为例,分别测试OpenSSL在OKMX8MM-C、OKMX8MQ-C 和 OKMX8MP-C这3款开发板上的性能对比,给大家提供一个参考。 OKMX8MM-C开发板 ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) OKMX8MQ-C开发板 ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) OKMX8MP-C开发板 ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) 从以上测试结果可以看出, OKMX8MM-C 开发板私钥每秒生成 84.5次 , OKMX8MQ-C 开发板私钥每秒生成 120.5次 ,而 OKMX8MP-C 开发板的私钥每秒生成 148.1次 ,由此可见,在OpenSSL性能这一方面,OKMX8MP-C开发板获胜。https://www.forlinx.com/
  • 热度 9
    2022-7-22 14:20
    1243 次阅读|
    0 个评论
    小编将通过本篇文章为大家列举和说明如何使用I2C4挂载at24c08(EEPROM)芯片。 ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) 修改结果 1、修改kernel/arch/arm64/boot/dts/rockchip/OK3399.dts,添加修改如下: ​ 编辑 添加图片注释,不超过 140 字(可选) 2、摘除at24c08模块上的上拉电阻,飞线使用1.8V给模块供电,接入I2C4_SCL和I2C4_SDA。 修改思路 我们要添加一个I2C设备的思路为: 设备驱动添加到内核 。 按照思路,首先要在设备树I2C4节点下添加at24c08的设备信息。在 kernel/arch/arm64/boot/dts/rockchip/OK3399-C.dts 文件,找到I2C4节点如下: ​ 编辑 添加图片注释,不超过 140 字(可选) 目前是disabled的状态,并且没有任何设备信息。添加设备信息如下: ​ 编辑 添加图片注释,不超过 140 字(可选) 如上图,通过设备树告诉内核,I2C4开始使用,并且挂载了一个EEPROM设备,名字叫 at24c08@50 ,其使用的驱动是compatible=“”; 那么我们现在缺少这个驱动,一般的I2C设备所使用的驱动文件对应的I2C厂家会提供,如果厂家说不需要驱动等,其实不是指的真的“不需要”驱动,而是他们的设备是可以使用通用驱动的。 本文中的设备就是这样,与厂家沟通后表示没有驱动文件。那么直接在内核目录下查找eeprom、at24这样的字眼,找找看有没有对应的通用驱动文件。 ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) 可见有 kernel/drivers/misc/eeprom/at24.c 文件。 查看其内容是如何匹配使用这个驱动的,正常来说驱动文件中应该预留了.compatible= *** 作为设备树调用该驱动的接口,只要在设备树描述里的compatible与 驱动文件中的.compatible中描述的一致,就会匹配成功了。 但是这个at24.c中并没有.compatible,只有一个at24_ids如下其中有”24c08”: ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) 对比同目录的at25.c文件就有.compatible没有ids。 ​ 编辑 添加图片注释,不超过 140 字(可选) ids中描述的也是和.compatible一样,是设备树用来识别匹配使用的,其中的三种识别匹配条件感兴趣的可以深追一下。因与本文无关,不再赘述。所以找到了对应的驱动文件,返回设备树添加描述。 ​ 编辑 添加图片注释,不超过 140 字(可选) 现在这样是告诉了内核我要使用I2C4,我的I2C4下有个EEPROM设备,使用的是“24c08”驱动,但是还没有将”24c08”这个文件给到内核,那么接下来的目的就是把驱动编进内核。 在kernel目录下运行makemenuconfig,搜索at24,如下: ​ 编辑 添加图片注释,不超过 140 字(可选) 按下数字1,自动跳转到对应选项,按下y选中,保存退出。 ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) 因为makemenuconfig修改的是.config文件,而编译脚本中每次都会重新生成.config文件,所以为了让修改生效,修改编译脚本,使其不重新生成.config文件,如下: ​ 编辑 添加图片注释,不超过 140 字(可选) 将生成.config文件的命令注释掉,编译内核,这样就将”24c08”给到内核,也通过设备树告诉内核,I2C4下有个EEPROM设备要用“24c08”。 设备驱动添加到内核 。 接下来就是编译内核,烧写boot镜像到开发板,使用i2ctool的命令进行查看,这里也不赘述i2ctool命令的具体使用方法。使用命令:i2cdetect-l 、i2cdetect-y 4。 ​ 编辑 添加图片注释,不超过 140 字(可选) 对应的地址已经被驱动注册,但是没有生成devices下的I2C4设备,说明模块可能没有正常工作,查看模块相关信息。 ​ 编辑 添加图片注释,不超过 140 字(可选) ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) 模块自带I2C4上拉电阻,因为OK3399-C底板上也带有上拉电阻如下图,并且是1.8V上拉,为了电平匹配,不修改底板的状态下,使用1.8V为基准,将模块带有的上拉电阻摘除,使用1.8V配置。 ​ 编辑 添加图片注释,不超过 140 字(可选) 再次修改设备树,添加上时钟描述和设备地址描述。 ​ 编辑 添加图片注释,不超过 140 字(可选) 编译后,烧写内核,烧写完毕启动开发板。 ​ 编辑 添加图片注释,不超过 140 字(可选) 识别到I2C4下的设备,然后进行读写测试即可,如下命令: /sys/bus/i2c/devices/1-0050/eeprom cat/sys/bus/i2c/devices/4-0050/eeprom ​ 编辑 切换为居中 添加图片注释,不超过 140 字(可选) 至此一个新的I2C EEPROM设备添加成功,对I2C设备的读写操作也可以通过开发板中带有的i2ctool相关命令操作。 https://forlinx.com/
相关资源
  • 所需E币: 5
    时间: 4 天前
    大小: 10.21MB
    上传者: 大晴天
    常用的单片机开发实例,包括电机控制、CRC校验、LED点亮的方法、常用的算法等。
  • 所需E币: 1
    时间: 2023-5-11 16:37
    大小: 130.86KB
    上传者: 舒凤志
    C语言指针教程,从入门到精通
  • 所需E币: 1
    时间: 2023-5-11 16:36
    大小: 272.48KB
    上传者: 舒凤志
    C语音指针资料,能更好理解指针
  • 所需E币: 2
    时间: 2023-5-6 15:32
    大小: 59.27MB
    上传者: zhusx123
    狂人  C语言一本编程书
  • 所需E币: 0
    时间: 2023-3-18 08:31
    大小: 1003.6KB
    上传者: 徐大侠
    华为内部C语言培训资料.华为内部C语言培训资料.华为内部C语言培训资料.
  • 所需E币: 5
    时间: 2023-3-5 22:39
    大小: 32MB
    上传者: 小圆梦
    [从零开始学单片机C语言].李建清-着.【高清版】
  • 所需E币: 2
    时间: 2022-12-15 17:24
    大小: 35.91MB
    上传者: fzyiye
    周立功公司编写的C语言学习书籍。
  • 所需E币: 1
    时间: 2022-12-15 17:19
    大小: 120.05MB
    上传者: fzyiye
    学习C语言需要知道的300个问题
  • 所需E币: 4
    时间: 2022-12-15 17:15
    大小: 70.59MB
    上传者: fzyiye
    C语言与概率论的深切结合。
  • 所需E币: 0
    时间: 2022-12-9 11:24
    大小: 1.26MB
    上传者: hardy_tu
    嵌入式C基础,入门可以看看
  • 所需E币: 3
    时间: 2022-7-22 17:10
    大小: 224.79KB
    上传者: 电子爱好者66
    C语言经典算法100例
  • 所需E币: 3
    时间: 2022-7-22 17:11
    大小: 35.91MB
    上传者: 电子爱好者66
    周立功c语言,C语言必备知识
  • 所需E币: 0
    时间: 2022-2-12 21:29
    大小: 896.64KB
    上传者: hnb0801_491372719
    英文原版,C语言原版,C语言的发明者所著,学习和新修C语言的最经典资料.
  • 所需E币: 1
    时间: 2021-12-16 15:58
    大小: 34.29MB
    上传者: 我也不知道
    本书提供与C语言编程相关的全面资源和深入讨论。本书通过对指针的基础知识和高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的C编程话题。书中给出了很多编程技巧和提示,每章后面有针对性很强的练习,附录部分则给出了部分练习的解答。本书适合C语言初学者和初级C程序员阅读,也可作为计算机专业学生学习C语言的参考。侵删
  • 所需E币: 1
    时间: 2021-12-16 15:52
    大小: 815.14KB
    上传者: 我也不知道
    C语言的书有一大堆,嵌入C语言的书也不少,但都不过是简单介绍一下标准C语言的语法,再讲一下嵌入式C语言与标准C的区别,讲一下新增加的关键字。这样的书,对于初学者或许是适合的。问题是,若是我不愿意只是当一个小菜鸟,我想对嵌入式C语言有更多更深的了解时,我突然发现,满图书馆的书,竟找不到一本,能解我心头之惑。对于在实际工作当中,你不再是独自编写程序,你要和小组内的成员之间分工合作,你要学会模块化编程、要写出更规范更安全的代码、做更合理的优化、减少更多的bug。所有的这些,都迫使你必须更彻底的理解嵌入式C的语法结构,数据细节,与硬件打交道的特性,使得你必须时时考虑硬件与C的对应关系并养成良好的编程习惯。本文的原意是想尽可能多的解决上述问题,帮助更多的新人深入理解嵌入式C语言。本文是我工作之余整理而来。是对我个人学习嵌入式C语言过程的总结。本文涉及的知识点多数来自于网络,其中加入我个人理解以及自己平时遇到的注意点。本文从编程风格谈起,讲述了模块化的编程方法,对一些大型项目中常用重点关键字做了讲解,参照MISRAC2004规范,对嵌入式C安全编程做了阐述,对一些嵌入式C的小技巧进行了讨论。在读本文时,我假设你有C语言基础、至少理解一种微控制器(51、PIC、AVR、DSP、ARM等)、有简单的(这里本想写较深的)汇编基础。
  • 所需E币: 1
    时间: 2021-12-15 09:12
    大小: 7.25MB
    上传者: 我也不知道
    《C语言接口与实现创建可重用软件的技术》本书基于接口的C言设计理念及其实现。深入详细地描诉了24个C语言接口及实现,内容包括:异常和断言、内存管理、链表、表格、集合、动态数组、序、环,位向量原子、格式化、低级字符毕、高级字符中、高精度算法,任意和多精度算法以及线程等。是一本为C语肓编人员排优解难的参考书。
  • 所需E币: 1
    时间: 2021-12-15 09:09
    大小: 16.49MB
    上传者: 我也不知道
    本书是“C:TheCompleteReference"的第四版。内容提要本书详细讨论了C语言及其函数库的各个方面,主要强调ANSVISO标准的C语言内容涵盖了C89和C99.全书分成6部分,包括C89定义的C语言的基本元素C99的增强C标准库通用算法和应用C编程环境创建C解释程序第一部分详细讨论关键字、预处理指令和C语言的特性。第二部分详细描述C99增加的特性。将C89与C99分开有两个原因。首先,大多数程序员目前仍将使用C89。这个版本就是程序员心目中的“C语言”,并且是世界上使用最广泛的语言。C89还是构成C 子集的C语言版本,因此,C语言的C89版本不仅在目前,而且在可以预见的未来,都是程序设计的重要组成部分。通过明确地定义C89和C99之间的分界线,读者可以很容易地知道C89在哪里结東,C99从哪里开始。其次,本书的许多读者可能早已非常熟悉C89。将新的C99特性单独列出,有助于这些读者快速找到新资料。第三部分讨论标准C函数库,这一部分描述了C89和099指定的所有函数,而且清楚地说明了哪些函数是C99增加的。第四部分介绍某些通用且重要的算法及应用程序,所有程序员都应在自己的工具包中包括这些内容。该部分还包含对人工智能问题求解以及Windows2000程序设计的讨论。第五部分介绍C语言编程环境,其中包括效率、移植和调试等。第六部分通过编制C解释程序来说明C语言,这无疑是本书中最令人兴奋,最富有挑战性,同时也是最有趣的内容。对于大多数C程序员而言,将无法抑制自己考察、改进第六部分的C解释程序并对其进行其他方面修改的欲望。为了理解C语言的优美和雅致,再也没有比为之建立解释程序更好的方式了。在Web上免费获取源代码,本书包含的源代可以以在线方式从ww.osborne,com上免费获取。
  • 所需E币: 5
    时间: 2021-10-2 08:51
    大小: 181.31KB
    上传者: jdz8888_684259509
    一个用C语言编写的变频器程序
  • 所需E币: 0
    时间: 2021-9-14 17:11
    大小: 31.26MB
    搞得c语言,看这一篇
  • 所需E币: 0
    时间: 2021-5-16 11:26
    大小: 906.26KB
    上传者: 鲁迅
    c语言入门ppt,面向初学者。大佬绕行