C语言数据类型
/* RT-Thread version information */
#define RT_VERSION 3L /**< major version number */
#define RT_SUBVERSION 1L /**< minor version number */
#define RT_REVISION 5L /**< revise version number */
这里的L表示该数值为 长整型(long)字面量
1 数据类型明确性
L 后缀显式声明该常量为 long 类型,确保编译器将其视为固定位宽的长整型而非默认的 int 类型,避免因编译环境差异导致的隐式类型转换问题
2 跨平台兼容性保障
嵌入式系统中不同架构(如ARM7/Cortex-M)的 int 类型位宽可能不同(16/32位),而 long 通常固定为32位。显式使用 L 后缀可统一版本号的数据类型,增强代码在异构硬件平台上的可移植性与可靠性
3 与RT-Thread数据类型体系匹配
RT-Thread自定义了基础数据类型(如 rt_int32_t、rt_uint32_t),这些类型在多数组架构下等效于 long。通过 L 后缀声明版本号,可直接与系统内部数据类型兼容,减少类型转换开销
同样的,U表示无符号,因为默认是int,加U就是无符号的int。
不可重入概念
不可重入 的本质在于其依赖的共享全局状态在并发执行时会被破坏,导致计算结果不可靠甚至程序崩溃。
所以不可重入的意思是:因为资源共享,所以重入会导致错误发生,而不是资源锁死,第二次无法占用资源。
但上面的说法不够专业化,准啊也说法如下:
“不可重入”的核心含义是:函数或操作因依赖共享资源(如全局变量、静态数据),在并发或中断场景下被重入时会导致数据错误或逻辑混乱,而非资源被永久锁死导致第二次调用完全无法执行。
我之所以会有这样的误解其实是之前看到的一句话:“不可重入函数不能由超过一个任务所共享”,其实这句话强调是的数据危险性而非调用禁止性。
与此相对的,可重入函数要么使用纯局部变量,要么对共享资源做互斥保护。
不可重入函数:printf函数、浮点运算函数

被折叠的 条评论
为什么被折叠?



