
C/C++
文章平均质量分 80
物联网老王
从事嵌入式、物联网开发工作。熟悉单片机、RTOS、Linux、物联网云平台、各种物联网通信协议。致力于成为全栈工程师、开源技术推广者。
欢迎打扰,欢迎订阅我的专栏。
展开
-
CMake 基础学习-认识 CMake 基本语法与应用
一文了解 CMake 基本语法、变量、宏定义、参数、列表、注释、环境变量等概念。示例与代码相结合,循序渐进,成为 CMake 高手。原创 2024-03-04 21:19:10 · 1336 阅读 · 1 评论 -
一文读懂大端、小端、字节序、MSB、LSB、MSBs、LSBs
一文读懂大端、小端、字节序、MSB、LSB、MSBs、LSBs:MSB 可能指 MSB(Most Significant Bit)或者 MSB(Most Significant Byte)。同理,LSB可能指LSB(Least Significant Bit)或者(Least Significant Byte)2. MSBs:这种写法通常指的是高位的几个 bit,LSBs:这种写法通常指的是几位的几个 bit。3. 字节序,指的是占用多个字节的数据在嵌入式设备的内存中或在网络通信链路中的字节排列顺原创 2023-04-24 22:10:53 · 43043 阅读 · 8 评论 -
嵌入式编程中的 __attribute__ 到底是什么
_attribute__是一个编译属性,用于向编译器描述特殊的编译标识,可以用于编译程序时的错误检查或高级优化。它是GNU C特色之一,系统中有许多地方使用到。高级嵌入式开发工程师应该对编译的优化选项增加了解,比如attribute机制,可以实现更高级的用法,写出更安全可靠的好程序。原创 2023-04-02 16:37:35 · 1799 阅读 · 0 评论 -
物联网应用选择 RTOS 还是 Linux?
Linux VS RTOS,我该选哪个?1)关于物联网应用选择 Linux(通用操作系统 GPOS) 还是 RTOS(实时操作系统 RTOS),首先是简单的答案:如果您有实时需求,您应该使用(顾名思义)RTOS。2)除此之外,一切都取决于您的实际要求(成本、功能)。这也实际上取决于开发人员习惯了什么。配置 Linux 可能非常具有挑战性,有时简单的 RTOS 会更容易。原创 2023-03-08 14:10:30 · 3404 阅读 · 0 评论 -
C 语言函数风格-我们为什么需要Posix
C 语言函数风格-我们为什么需要 Posixposix 是什么?posix(Portable Operating System Interface of UNIX) 是一种API 编程标准的概称。这套标准为了解决日渐混乱的编程风格而生,目标是提高程序的兼容性和可移植性。其内容涉及 Unix 系统调用接口,shell 程序、文件、线程和网络编程等遵循 posix 风格的函数,其返回值只有两种:0 表示成功,非 0 表示失败(GAI 风格与之类似)。其他的输出结果均使用函数参数来传递。原创 2022-05-23 23:55:23 · 508 阅读 · 0 评论 -
内联函数(inline 函数)详解
inline 函数详解内联函数和普通函数一样,区别仅仅是在被调用处使用机器码的形式。采用机器码的目的是:减少因调用而造成的开销,加速执行效率。适用场景:经常调用的小函数。可以在头文件中定义这些内联函数。不适合的场景:包含大循环、递归的函数。使用内联时的调用方法:不使用内联时的调用方法:测试程序:原创 2022-04-26 23:39:51 · 6862 阅读 · 2 评论 -
详解可重入函数与不可重入函数
详解函数的可重入性;详解可重入函数和不可重入函数;如何设计可重入的函数。原创 2022-04-09 18:16:59 · 7267 阅读 · 2 评论 -
详解C语言中回调函数的含义与使用场景[2]
详解C语言中回调函数的含义与使用场景[2]引言:在上一篇详解C语言中回调函数的含义与使用场景[1]中介绍了回调函数的概念与使用方法,本节将深入地介绍回调函数典型的使用场景。通过使用回调函数可以实现驱动和应用程序的分离解耦,让程序更加地灵活。也可以借助回调函数实现插入自定义代码、分层设计程序的思想。重点讲述了回调函数的三种典型使用场景:1)实现函数功能重定义2)扩展函数功能3)实现程序分层设计原创 2022-03-27 19:00:57 · 4308 阅读 · 0 评论 -
详解C语言中回调函数的含义与使用场景[1]
详解C语言中回调函数的含义与使用场景引言:回调函数是 C 语言中 函数指针 的一种用法,在一个函数A中通过函数指针调用另一个函数B的过程称为回调(callback),通过函数指针被调用的函数B就是回调函数。回调让函数 B 的代码更加泛化和抽象,增强了程序的灵活性和可维护性。动态改变回调函数的实现的方法主要有三种:1)编译时直接赋值2)运行时实现动态注册3)作为函数参数传递到指定的函数内原创 2022-03-27 17:45:58 · 6230 阅读 · 0 评论 -
C语言中如何获取函数内成员的值
C语言中如何获取函数内成员的值引言:函数作为实现 C 程序功能模块的主要载体,可以将功能的实现细节封装在函数内部。这对于实现模块化的编程带来了便利,让指定功能的复用性也变得更好。但“封装”除带来上述好处外,也导致访问函数内部细节的不太方便,为了了解函数内部的情况,我们讨论如何对函数进行拆包,即获取函数内部的信息。通过函数返回值获取函数内部的情况;通过传递参数,变量降级(传地址)获取函数内部的情况;原创 2022-03-27 00:30:58 · 5876 阅读 · 0 评论 -
C语言结构体中不得不知的技巧-offsetof()与 container_of()的用法
C语言结构体中不得不知的技巧-offsetof()与 container_of()的用法原创 2022-03-26 18:38:29 · 1770 阅读 · 0 评论 -
详解 C 语言中的弱符号与弱引用
详解 C 语言中的弱符号与弱引用;一文读懂 C 语言中的__attribute__((weak)) 与 __attribute__ ((weakref())的用法与含义。原创 2022-03-26 14:44:23 · 7943 阅读 · 0 评论 -
C语言-0字节长度数组的使用
奇怪的知识又增加了-0字节长度数组的使用引言测试程序与结果分析引言最近看了一些网络编程的书,学到了一些C语言的“奇巧淫技”,遂开此栏目,进行记载。问题引出:试求以下两个结构体的长度,并简述如何使用这种0字节长度的数组typedef struct zero_byte_buffer1 { uint8_t status; int len; char data[0]; } zero_byte_buffer1_t;typedef struct zero_byte_buffer2原创 2021-01-10 19:50:59 · 1299 阅读 · 0 评论