(void)sizeof(0 [array])是什么意思?

Ant*_* C. 4 c++ arrays templates

我遇到了以下代码,它返回C样式数组的大小.

template <typename Type, int N>
int GetArraySize(Type (&array)[N])
{
    (void) sizeof (0[array]);
    return N;
}
Run Code Online (Sandbox Code Playgroud)

模板部分似乎已经在这个问题中得到了解释.


但是,我还是不明白这条sizeof线的实用性是什么.有任何想法吗?有人建议避免使用未使用的变量警告,但是#pragma可以使用更简单的警告,对吧?

而且,这段代码在任何情况下都会有效吗?没有任何限制吗?

Jar*_*d42 10

我认为该行的目的是静默未使用的变量警告.更简单的是省略参数名称

template <typename Type, int N>
int GetArraySize(Type (&)[N])
{
    return N;
}
Run Code Online (Sandbox Code Playgroud)

  • 好吧,这个警告可以用`(void)数组来沉默;`同样,为什么把sizeof与花式索引放在那里? (3认同)
  • 因为为什么不呢?:d (2认同)