gpt4 book ai didi

c - _construct in C,一个在oop项目中使用的宏

转载 作者:太空宇宙 更新时间:2023-11-04 03:30:02 26 4
gpt4 key购买 nike

最近,我开始使用C来学习面向对象程序设计。我在网上找到了一些有趣的 Material 。其中之一是 Github 上的 QMonkey/OOC-Design-Pattern 存储库。 https://github.com/QMonkey/OOC-Design-Pattern

这是我的问题:

下面是QMonkey/OOC-Design-Pattern中的base.h。这是此 OOP C 项目中使用的基本宏。找了很多关于#、##、offsetof、container_of的解释。我唯一搞不懂的是_destruct和_construct的用法。我在哪里可以找到他们的解释?

感谢您的帮助。

#ifndef BASE_H
#define BASE_H

#include <stdlib.h>
#include <stddef.h>

// clang-format off
#define container_of(ptr, type, member) \
({ \
const typeof(((type *)0)->member ) *__mptr = (ptr); \
(type *)((char *)__mptr - offsetof(type,member)); \
})

#define new(TYPE, args...) TYPE ## _construct(malloc(sizeof(TYPE)), ## args)
#define delete(TYPE, ptr) do \
{ \
TYPE ## _destruct(ptr); \
free(ptr); \
} \
while(0)
// clang-format on

#endif

最佳答案

_construct_destruct 只是使用 token pasting operator, ## 附加到类名的后缀.因此,如果 TYPEMyClass,那么将有名为 MyClass_constructMyClass_destruct 的构造函数/析构函数。

关于c - _construct in C,一个在oop项目中使用的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37541165/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com