C中(无效)变量的目的是什么?

Joe*_*ugh 2 c embedded

我正在阅读本书,并且遇到了以下代码:

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)写的是什么呢?

Evi*_*ach 8

通常,当不使用函数参数时,编译器可能会警告您。毕竟,如果您不打算使用它,为什么要放在第一位呢?

实际上,这是对参数的人为使用,除了告诉编译器您知道自己在做什么外,它没有任何用处,因此“ 警告您已做好准备!”

(void)args可在我见过的所有平台上工作。我相信__attribute((unused))是gcc特定的东西。