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