为什么我要调用一个没有明显功能的指针

tho*_*721 3 c pointers stm32 void-pointers keil

在 Keil uVision 的 STM32 开发板示例中,我发现以下函数:

__NO_RETURN static void thrLED(void *argument) {
  ...

  (void)argument;

  ...
}
Run Code Online (Sandbox Code Playgroud)

是什么意思(void)argument;

据我所知,“参数”是一个 void 类型的指针,作为函数“thrLED”的参数。但我不知道这条线在做什么。

Eri*_*hil 9

这种形式的语句有时用于消除来自编译器或其他代码检查工具的未使用对象的警告。

如果argument函数中未使用 ,则启用提升警告的编译器可能会警告argument未使用该参数。

表达式语句(void) argument;名义上在表达式中使用argument,即使强制转换会void丢弃结果。虽然编译器可以认识到该语句没有任何效果并对此发出警告,但它是一种选择通知编译器的形式,但argument故意不使用。因此,编译器的设计目的不是警告此类语句,而是接受它们作为不需要警告的指示。