我的问题如标题所述。 C11 对 void 表达式有如下描述:
void 表达式(类型为 void 的表达式)的(不存在的)值不得以任何方式使用,并且不得进行隐式或显式转换(除 void 之外) 应用于这样的表达式。如果任何其他类型的表达式被计算为 void 表达式,其值或指示符被丢弃。 (对 void 表达式进行求值 副作用。)
我读过很多人对这段话的解释。现在,我大概明白了丢弃其价值意味着什么。然而,这段话中的“指示符被丢弃”让我感到困惑。
“指示符被丢弃”是什么意思?这里的“指定者”指的是什么?能举个例子给我看一下吗?
这个问题可能很简单,也许根本没有用。但我还是想知道这里标准的用意。
感谢您的阅读。
想象一下:
void foo(int a)
{
(void)a;
/* .... */
}
该值和指示符被丢弃,但如果容易产生副作用,则可能会对其进行评估。
示例:
volatile x;
(void)x;