1、static_cast<void>(0)和(void)0的意义:
1.1:作用:
C++中的的static_cast<void>(0)
和C语言的(void)0
作用一样,都表示将0
强制转换为void
类型,表示一个空语句。
1.2:原理:
任何表达式都可以显示地转换为void
类型。而0
事实上是一个表达式,所以(void)0
的涵义就是将表达式0
显示地转换为void
类型。转换前后的区别在于:转换之前,表达式0
的值为int
类型0
;而转换之后,表达式(void)0
的值为void
。
2、宏中的使用实例:
定义:
#define DEBUG_COUT(x)
(x) ? cout << "print" << endl : static_cast<void>(0)
使用:
DEBUG_COUT(1);
解释: 在输入为0情况下,不执行任何操作。
3、直接写0的问题:
如果直接写0
的话,则当编译时,由于该处没有执行代码,编译器会弹出:"Warning: expression 0;
has no effect."的提示,static_cast<void>(0)
的作用为避免编译器弹出warning提醒。
参考资料:
1、((void) 0) 这是什么用法?
2、assert()中的(void(0))浅析