我正在阅读本书,并且遇到了以下代码:
static void
task1(void *args) {
int i;
(void)args;
for (;;) {
gpio_toggle(GPIOC,GPIO13);
for (i = 0; i < 1000000; i++)
__asm__("nop");
}
}
Run Code Online (Sandbox Code Playgroud)
我了解(相对)第5行以外的所有内容。正在(void)args;做什么?
args 在函数主体中未使用,并且我知道如果不使用参数,则可以编写
static void
task2(void *args __attribute((unused))) {
// code here
}
Run Code Online (Sandbox Code Playgroud)
这里没有做。那这样(void)写的是什么呢?
通常,当不使用函数参数时,编译器可能会警告您。毕竟,如果您不打算使用它,为什么要放在第一位呢?
实际上,这是对参数的人为使用,除了告诉编译器您知道自己在做什么外,它没有任何用处,因此“ 警告您已做好准备!”
(void)args可在我见过的所有平台上工作。我相信__attribute((unused))是gcc特定的东西。