繁体   English   中英

为什么将使用过的变量转换为void

[英]Why cast used variable to void

我目前正在查看FAST的OpenCV实现,并偶然发现了一些变为void变量。 据我所知,当未使用变量时,这用于静音lint /编译器警告。 但在这种情况下,使用变量。 它可能与SSE有关,因为它只发生在那些代码部分。

#if CV_SSE2
    __m128i delta = _mm_set1_epi8(-128), t = _mm_set1_epi8((char)threshold), K16 = _mm_set1_epi8((char)K);
    (void)K16;
    (void)delta;
    (void)t;
#endif

后来的用法( 编辑 ):

#if CV_SSE2
...
__m128i v1 = _mm_xor_si128(_mm_subs_epu8(v0, t), delta);
...
int m = _mm_movemask_epi8(_mm_cmpgt_epi8(max0, K16));
...
#endif

另请参见:OpenCV-Repository中的full fast.cpp (我粘贴的代码来自第71行)

那么,它有什么好处,为什么只有SSE相关的变量呢?

虽然它依赖于编译器,但它通常用于抑制“未使用的变量”消息。

我更喜欢UNUSED(var)宏,因为它清楚地显示了意图并且可以针对各种编译器环境进行自定义。

如果你看一下这些行的责任,就会在这个提交中添加它们,并提交消息“ windows下的警告 ”。

您可以询问提交者, https://github.com/CheeseWiz ,但我怀疑它只是归结为MSVC中的一个错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM