0

コンパイラが理解できないOSコードをコーディングしていて、関数の1つで次のことを行っています。

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

したがって、コンパイラは次のように文句を言います。

Warning: Variable "r0" is not used

ファイル内のこの1つのポイントでのみ警告を無効にするにはどうすればよいですか?私は一般的にこれらの警告を出したいので、グローバルにオフにしたくありませんが、この時点では何もできないので面倒になります。

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 に答える