为什么在许多开源代码中,使用#define或typedef别名作为内置于C中的函数或变量如此流行?[已关闭]

33qvvth1  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(74)

已关闭。此问题为opinion-based。它目前不接受回答。
**希望改进此问题?**请更新问题,以便editing this post能够以事实和引文来回答。

3天前关闭。
Improve this question
这是Tcl中的一段代码

#define TclpSysAlloc(size)      malloc(size)
#define TclpSysFree(ptr)        free(ptr)
#define TclpSysRealloc(ptr, size)   realloc(ptr, size)

字符串
那有什么用或者这是一个必须遵循的规则?

cbwuti44

cbwuti441#

当然,由于代码的可移植性。在所有开源项目中,开发人员更喜欢使用宏而不是原始函数来处理某些代码部分。宏提供了一个预编译(在运行时没有额外的成本)的机会,抽象的功能。假设我们需要使用一个可在多台机器和操作系统上使用的开源项目。很明显,开发人员必须提供一些宏,使他们的项目可移植。例如,堆管理是基于操作系统的服务,其功能通常依赖于操作系统。你应该考虑到有这么多的机器架构和操作系统(除了Win或Linux),如果我们假设嵌入式系统和实时操作系统。因此,开发人员提供了一个类似于*_port.h的头文件来根据目标平台定义基本函数,并使这些函数抽象化。例如,不同操作系统中的内存分配:FreeRTOS:pvPortMalloc TI SysBIOS:Memory_alloc Unix:malloc

相关问题