gpt4 book ai didi

C++ 确定变量的类型并在 sizeof() 中使用它

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:08:44 25 4
gpt4 key购买 nike

我想用 C++ 编写一个宏,它将值 0 赋给表的每个元素。例如,这样声明 i:int i[10];,宏 fill_with_zeros(i) 会产生这样的效果:

i[0] = 0;

i[1] = 0; 等等。

这是它的代码:

#define fill_with_zeros(xyz) \
for(int l = 0 ; l < sizeof(xyz) / sizeof(int) ; l++) \
xyz[l] = 0;

问题是我希望它能处理多种类型的表:char、int、double 等。为此,我需要一个函数来确定 xyz 的类型,以便我可以使用 sizeof(typeof(xyz)) 之类的东西代替 sizeof(int)

存在类似的线程,但人们通常希望打印类型名称,而我需要在 sizeof() 中使用该名称。有什么办法吗?

提前致谢

最佳答案

为什么您认为您需要一个宏?这应该有效:

// Beware, brain-compiled code ahead!
template< typename T, std::size_t sz >
inline void init(T (&array)[sz])
{
std::fill( array, array+sz, T() );
}

我希望我的 std lib 实现能够优化 std::fill() 以在以下情况下自行调用 std::memset()(或类似的东西) T 允许。

请注意,这实际上并没有将元素归零,而是使用默认构造的对象进行初始化。这对所有可以归零的类型都实现了相同的效果,并且适用于许多不能归零的类型。

关于C++ 确定变量的类型并在 sizeof() 中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6720918/

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