暂无图片
关于alloc_assist.h文件中宏的理解
我来答
分享
暂无图片 匿名用户
关于alloc_assist.h文件中宏的理解

在学习源码的时候,看到了有些地方使用以下的宏:

MEMCPY(buf + pos, src.get_number_digits(), number_size);

点进去查看,发现为以下内容:

#define MEMSET(s, c, n) memset(s, c, n)
#define MEMCPY(dest, src, n) memcpy(dest, src, n)
#define MEMCCPY(dest, src, c, n) memccpy(dest, src, c, n)
#define MEMMOVE(dest, src, n) memmove(dest, src, n)
#define BCOPY(src, dest, n) bcopy(src, dest, n)
#define MEMCMP(s1, s2, n) memcmp(s1, s2, n)
#define MEMMEM(s1, n1, s2, n2) memmem(s1, n1, s2, n2)
#define STRCPY(dest, src) strcpy(dest, src)
#define STRNCPY(dest, src, n) strncpy(dest, src, n)

这样的话仅仅是在预处理的时候做出替换,例如将文件中MEMCMP(s1, s2, n)替换为 memcmp(s1, s2, n),那么这个文件存在的意义是什么??求助各位大佬。

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
O
OceanBase社区传送门

一种开发习惯吧,目前确实没啥用,因为还有裸用memset而不是MEMSET的。
但如果都用MEMSET而不是memset,那么假如嫌弃memset慢想做一些优化或者诊断功能时,就可以比较方便地通过改宏达到目的了。
#define MEMSET(s, c, n) \
{ \
do_something(); \
memset(); \
}
比如你可以看一下deps/oblib/src/lib/thread/ob_tenant_hook.cpp,就只能通过dlsym这种比较麻烦的方式来做hook了,但如果当初大家都写成PTHREAD_MUTEX_LOCK而不是pthread_mutex_lock,改起来就比较方便了。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
索引列会存储空值列数据吗?
回答 1
会做编码压缩去存储isnull数值作为索引列都是一样的区分度不明显,没办法区分.这个业务场景是什么?正常索引列都是区分度比较高的
各位老师,Oceanbase在truncate的表之后可以把这张表恢复出来吗?用的是什么方法?
回答 1
已采纳
应该要用到备份来做恢复了。恢复租户(ob的恢复相当于恢复出一个新租户)到truncate之前(时间戳/SCN)。表数据导出,导入回原租户表中。或者可以试试按表恢复https://www.oceanba
oms长时间未登录,密码已过期,如何修改?
回答 2
对于OMS(OracleManagementService)长时间未登录且密码已过期的情况,您可以按照以下步骤来修改密码:打开OMS主机上的终端或命令提示符窗口。使用管理员权限登录OMS主机上的操作系
oceanbase tpcc压测疑惑
回答 1
官网有tpcc测试教程文档,调哪些参数,都有罗列。默认参数就是测试使用,跑性能肯定有针对性的优化。上生产也不可能默认参数上,肯定是和对应业务模型适配,压测,找到对应业务适配的合适的参数才行。https
oceanbase 2.2 1.9G版本的下载找不到了,希望体验完整的OCP和OBProxy
回答 1
目前OB是没开放完整的下载链接出来,试用版的体验也有限,着实是让大家想完整学习和体验他的功能都做不到,OBCA认证课程讲的一堆东西都无法在体验版上操作。希望OB早日放开这种限制吧。
obloader加载的数据文件有6列,接数表有7列需要怎么处理呀
回答 1
下载最新的版本(4.2.4)文件中的列与表中列数量不相等,可以任选下述方案之一即可:2.1指定excludecolumnnames排除掉不需要的列;2.2指定includecolumnnames包含需
centos7 升级内核到5.4后,kubernetes上的 sapp-ob-cluster-cn-zone1-0 日志一直报500,如何进一步往下排查?
回答 1
如果有场景可以联系下布道师,故障的范围比较宽泛,2.0版本从设计上来说会做自动的故障恢复的,只要满足OB的多数派条件,一般来说按照资源的要求来部署就可以。
手工部署dbagent如何通过验证
回答 1
不要把所有的都写到一个配置文件https://github.com/oceanbase/obagent/blob/1.2.xrelease/docs/installanddeploy/deployob
c++程序调用mysql_real_query,86w条数据(每条数据32个字段)耗时在几十分钟级
回答 1
replace暂时不支持并发,可以业务上改造成insert方式,同时如果可以升级可以试试并行导入功能(3.1.4支持),能提升性能。https://www.oceanbase.com/docs/com
Oceanbase 企业版,创建oracle租户后新建租户不能登录,怎么解决?
回答 1
oceanbaseobclient连接串没问题的情况下,看看是否设置的tcp白名单?不能登录是什么报错?