0

我正在编写一些编译器不理解的操作系统代码,并且在我的一个函数中我这样做:

void kernel_getpid()
{
        register unsigned int r0 asm("r0") = current_pid;
}

所以编译器抱怨:

Warning: Variable "r0" is not used

如何仅在文件中的这一点禁用警告?我通常希望收到这些警告,所以我不想在全局范围内关闭它们,但此时它变得很烦人,因为我对此无能为力。

4

1 回答 1

1

从版本 4.2 到 4.6 之前,您可以使用以下内容。不幸的是,它会从文件中的那一点开始关闭警告。

#pragma GCC diagnostic ignored "-Wunused-variable"
void kernel_getpid()
{
  register unsigned int r0 asm("r0") = current_pid;
}

对于 4.6 或更高版本,您可以推送和弹出诊断标志,因此您可以使用以下内容。

void kernel_getpid()
{
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-variable"

  register unsigned int r0 asm("r0") = current_pid;
}
#pragma GCC diagnostic pop

您可以在 GCC文档或有关抑制 GCC 警告的教程阅读更多详细信息。

于 2012-05-06T21:52:26.737 回答