如何检查函数中不同变量的大小?

时间:2017-11-16 05:44:15

标签: c++ function pointers sizeof

对于一个类,我必须解决这个简单的问题,我需要在使用指针时检查多种类型变量的大小并将其全部显示出来。 我希望我的代码看起来像posible一样干净。所以我想知道是否有更清洁的东西。我现在有这个代码。

void size (float *p1, int *p2, int*p3, int *p4, double *p5,bool *pc){
    for(int i=1; i <=5; i++){
        cout << "Size of pointer " << i << " is:" << sizeof(p::i)<< endl;
    }

    cout << "Size of control pointer is:" << sizeof(pc)<< endl;
}

有没有办法以某种方式这样做,还是我必须逐行明确地写?

2 个答案:

答案 0 :(得分:1)

您可以使用模板参数包来执行此操作,但目前尚不清楚这是您遇到的任何问题的最佳选择。

4
8
10

输出结果(在我的机器上):

{{1}}

答案 1 :(得分:0)

如果您的目标是自动打印某些功能参数的大小,您可以编写类似

的内容
template< typename T, typename... V >
void print_size_of_args( T(*f)(V...) )
  {(( std::cout << "size of arg[" << typeid(V).name() << "] is " << sizeof(V) << std::endl ), ... );}

void fun(float *p1, int *p2, int*p3, int *p4, double *p5,bool *pc)
{
  print_size_of_args(fun);
  // ...
}

这是c ++ 17,因为它适用于非重载的非成员函数;如果有必要,可以做得更一般......