c语言

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。最新的C语言标准是C18。

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。最新的C语言标准是C18。收起

查看更多
  • 面试题: 三行fork代码-90%的人算不对进程数
    仲一分享了一个关于C语言`fork()`函数和短路运算符的编程面试题,解释了如何计算程序中的新进程数量,并指出了一些常见的错误答案及其原因。
  • 手把手教你:泰凌微 TLSR8258 C 代码实现BLE RPA私有地址 Hash校验
    本文介绍了如何使用C语言计算蓝牙广播时的可解析私有地址(RPA)的hash值。首先定义了相关的变量并编写了计算hash的函数,接着在controller_event_callback()中给my_prand赋值,并在app_configAdvParam函数中增加了复制临时irk到my_local_Irk的函数。最后在主循环中打印相关参数,并通过nRf Connect软件进行连接和测试,展示了计算得到的hash值与广播的低3位一致的结果。
    706
    06/11 11:24
    手把手教你:泰凌微 TLSR8258 C 代码实现BLE RPA私有地址 Hash校验
  • Linux下如何用C语言解析json文件,含源码
    JSON概述:JSON是一种轻量级的数据交换格式,基于ECMAScript子集,易于人阅读和编写,适用于数据交换。cJSON库是一个跨平台的JSON解析器,支持链表存储,提供多种API用于解析、创建和操作JSON数据。 常用函数API: 1. `cJSON_Parse`:将JSON字符串解析为cJSON结构体。 2. `cJSON_Delete`:释放cJSON结构体占用的内存。 3. `cJSON_Print` 和 `cJSON_PrintUnformatted`:将cJSON结构体转换为JSON字符串。 4. `cJSON_Version`:获取cJSON库版本。 5. `cJSON_GetArraySize` 和 `cJSON_GetArrayItem`:操作数组。 6. `cJSON_IsXXX`:判断cJSON类型。 7. `cJSON_CreateXXX`:创建不同类型的cJSON对象。 8. `cJSON_AddItemToArray` 和 `cJSON_AddItemToObject`:添加cJSON对象到链表。 9. `cJSON_DetachItemViaPointer` 等:删除cJSON对象。 10. `cJSON_AddXXXToObject`:简化操作,创建并添加cJSON对象。 参考代码展示了如何打开、解析和修改JSON文件,以及如何打印JSON数据。
    1338
    06/11 10:06
    Linux下如何用C语言解析json文件,含源码
  • 用汇编代码分析这个古老的C语言笔试题!
    本文介绍了两种C语言循环写法及其优缺点,并通过汇编代码分析展示了编译器对不同写法的优化效果。写法1适合固定不变的循环场景,追求代码简洁和易维护;而写法2则更适合追求性能的场景,但在某些情况下会导致代码冗余和占用空间增大。现代编译器能够自动优化写法1至写法2,两者在实际运行效率上基本一致。
  • 让 AI 写出符合公司规范的嵌入式 C/C++ 代码
    文章讨论如何将公司规范转化为AI能够遵守的输入,并使用编译、静态分析和最小测试来防止错误。作者强调模型擅长语感,但在理解和执行复杂条件方面存在不足。提出编写简短且具体的规范文档,结合实际代码样例和团队经验,以提高AI生成代码的质量和一致性。同时,建议采用分步生成方法,明确接口和数据流向,降低审查难度。此外,文章还提到按风险分工进行任务分配,确保代码质量和安全性。最后,强调规范沉淀的重要性,确保团队内部的一致性和长期有效性。
    577
    05/20 10:40
  • curl使用读回调来分块上报文件
    本文介绍了使用curl编程实现文件分段上传的方法。首先定义了上传信息结构体`UploadInfo_t`,包含文件名、总大小和已上传大小。接着编写了读回调函数`file_read_cb`,通过多次回调上传文件的不同部分。最后展示了完整的上传代码并进行了运行测试,成功实现了文件的分段上传。
  • 结构体对齐与压缩对齐操作
    这段代码展示了在C语言中定义结构体时如何影响内存分配。`para_t`结构体由于编译器默认对齐导致其大小为16字节,并且成员地址均为4的倍数。而`para_packed_t`结构体通过添加`__attribute__((packed))`属性实现了紧凑的内存布局,总大小为11字节,但成员地址不再严格遵循4的倍数规则。这种做法适用于需要节省内存的空间场景,但在某些硬件平台上可能导致性能下降或硬故障。此外,还介绍了不同编译器对取消对齐的支持方式及其对不同架构的影响。
  • 用简单的例子,来理解C指针
    本文介绍了C/C++中的指针概念及其应用场景,重点探讨了一级指针的使用方法和注意事项。通过多个实例展示了如何利用指针实现数据传递和间接访问,同时强调了正确使用指针的重要性,特别是避免访问空地址带来的程序崩溃风险。文章还详细解释了取地址(`&`)和解引用(`*`)的概念,并提供了深入理解指针的关键点。最后,总结了指针在编程中的重要性和潜在问题,帮助读者更好地掌握指针的应用技巧。
    2396
    04/20 16:12
  • 嵌入式 C 语言有哪些语法增强特性?
    GNU C扩展语法在嵌入式开发中提供了多种实用特性,包括指定初始化器、语句表达式、属性修饰符、零长度数组、case范围指定和内联函数,有效提升了代码的可读性、灵活性和执行效率。
    嵌入式 C 语言有哪些语法增强特性?
  • C语言表驱动法在定时任务列表中的应用
    在嵌入式软件开发中,当硬件定时器不足时,可以通过函数指针实现软件定时器。定义`timer_task`结构体表示任务,包含间隔和回调函数指针。初始化任务数组,并在主循环中定期检查任务执行条件,通过函数指针调用相应任务。此方法适用于多个任务场景,便于扩展且无需修改主循环代码。
  • 使用cJosn读写配置文件
    本文介绍了如何使用C语言读取和修改JSON配置文件。首先定义了配置文件的数据结构,接着实现了从文件加载JSON到内存的功能,并解析其中的各项数据。此外,还提供了修改配置文件中不同类型数据的方法,包括数值、字符串和数组。最后,通过一个交互式菜单展示了如何查看和修改配置文件,并附上了完整的代码示例。
    519
    03/30 09:51
  • 为什么LVGL的Python代码看起来 “很别扭”?真相藏在C语言底层里
    LVGL Python 绑定的核心逻辑是通过显式传参方式创建控件,而不是使用 Python 属性赋值来绑定子控件。这是因为 LVGL 是 C 语言实现的嵌入式 GUI 库,其 Python 绑定优先适配底层硬件逻辑,而非单纯追求 Python 语法的“优雅”。这种方式能减少 Python 层的额外开销,提高嵌入式设备的性能。此外,这种方法还能更好地管理和控制控件的层级关系,适合嵌入式场景下的使用。
  • 做项目的时候,被这几个C语言问题摆了一道!
    嵌入式C语言编程中的三大常见坑及其解决方案:隐式类型转换导致数值溢出:在配置UART波特率时,由于数据类型转换不当,导致寄存器值错误,引起设备死机或数据混乱。解决方法:使用正确宽度的变量类型并进行显式类型转换,避免隐式类型转换带来的溢出风险。
    做项目的时候,被这几个C语言问题摆了一道!
  • c语言的循环是如何用汇编代码来实现的?
    本文介绍了如何将简单的C语言循环代码翻译成ARM汇编代码。首先展示了C语言代码并将其编译为二进制文件。接着使用`arm-linux-gnueabihf-objdump`命令去掉了符号信息,生成了汇编代码文件。通过对汇编代码的逐行分析,解释了变量在栈上的分配、循环体的执行流程以及相关的寄存器操作。最后提供了编译脚本和相关配置文件,以便读者能够重现整个编译和调试过程。
    722
    03/13 10:31
    c语言的循环是如何用汇编代码来实现的?
  • c语言实例|实现简单的命令行
    本文介绍了如何在嵌入式系统中实现一个简单的命令行模块。通过使用结构体`struct _cmdnum`来维护命令信息,并定义了四个基本命令:`help`, `exit`, `test`, 和 `send`。实现了`getline()`、`parsecmd()`等函数进行命令行解析和执行相应的回调函数。最后展示了如何通过命令行交互测试这些功能。
    c语言实例|实现简单的命令行
  • 嵌入式C语言宏的高级编程技巧与实战!
    本文介绍了libevhtp高性能HTTP服务器库中使用的几个宏高级技巧,包括分支预测优化、Token拼接、可变参数宏和字符串化等。这些技巧有助于编写高效且易于维护的嵌入式代码。
    977
    02/12 08:53
    嵌入式C语言宏的高级编程技巧与实战!
  • 不用质疑了,C是最精炼的高级语言,不服来辩!
    C语言作为一种简洁、直接且充满力量的语言,在当今技术繁荣的时代显得尤为独特。尽管其他语言不断添加复杂的功能,C语言却坚守其原始的简洁性,拒绝变得臃肿。它的“节制”体现在没有元数据、类型标签和垃圾回收机制,使得开发者能够完全掌握内存操作。此外,C语言给予程序员极高的信任度,允许他们直接操控硬件,享受纯粹的掌控感。尽管如此,C语言并未退出历史舞台,它是许多现代软件的基础,从AI到操作系统,无不依赖其稳定性和性能。对于追求编程本质的人来说,重读C语言代码能让人重新找到编程最原本的魅力。
    600
    02/09 17:09
  • 软件开发流程实例:从需求到落地的通俗解析
    本文介绍了ASPICE在C语言开发中的应用,从需求梳理到交付落地的全流程,涵盖了需求阶段、设计阶段、编码阶段、编译链接、调试阶段、测试阶段和交付与维护等七个主要步骤,并强调了安全性和合规性的要求。
  • 回调函数的注册机制为什么会在嵌入式固件开发中应用如此广泛?
    本文介绍了回调函数的概念及其在C语言中的实现方法,详细阐述了回调函数的应用场景,包括事件回调和寄存器中的多回调。通过实际代码示例,展示了如何使用函数指针实现回调机制,强调了合理使用回调的重要性,以提高代码的灵活性和可维护性。
    1029
    01/09 17:45
  • 向上取整的一点技巧 | C语言
    在STM32底层开发中,为了满足硬件对寄存器访问的要求,通常需要确保写入数据的长度是寄存器宽度的倍数。例如,当需要32位访问一个地址时,若要写入10个字符(共8字节,需3次写入),新手可能会先判断长度是否整除,而老手则会采用更简洁的方法: ```cpp len = (len + SIZE - 1) / SIZE; ``` 这种方法不仅简化了代码,还巧妙地避免了额外的条件判断,体现了编程技巧和经验的重要性。

正在努力加载...