gpt4 book ai didi

c++ - 将任何数据类型/对象作为参数传递以确定其大小

转载 作者:太空宇宙 更新时间:2023-11-04 01:20:55 25 4
gpt4 key购买 nike

我很确定我已经用 C 语言回答了我的问题,但不确定 Cpp。

typedef struct strXXX {
uint16_t member1;
uint8_t member2;
// ...
} XXX;

XXX tst;

void some_init_func(void * obj, uint16_t sz)
{
obj = &tst;
size = sz;
}

当调用 some_init_func 时,必须给出大小:

sizeof(tst)

有没有办法将任何对象或数据类型传递给some_init_func,并确定函数中对象的大小?

我确实认为在 C/Cpp 中这是不可能的,因为你可以传递一个指针,但不能从它的指针确定对象本身的大小,
但我想知道你们中的一些硬编码人员是否找到了解决这些语言中这种缺失的解决方法?

...除了这种宏(它不会一直起作用,因为大小参数可能不在对象地址之后):

#define PASS_OBJ(obj)    &obj, sizeof(obj)

感谢您的帮助!

最佳答案

在 C++ 中,您可以只使用模板函数:

template <typename T> void some_init_func(T* obj)
{
const size_t size = sizeof(T);

// ...
}

关于c++ - 将任何数据类型/对象作为参数传递以确定其大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42945271/

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