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

问题描述 投票:0回答:1

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

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

  (void)argument;

  ...
}

(void)argument;
是什么意思?

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

c pointers stm32 void-pointers keil
1个回答
9
投票

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

如果函数中未使用

argument
,启用了提升警告的编译器可能会警告未使用
argument
参数。

表达式语句

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

© www.soinside.com 2019 - 2024. All rights reserved.