restrict

restrict キーワードは C99 の機能です。異なるポインタや関数パラメータ配列が、重複するメモリ領域を実行時に指すことはないという保証をコンパイラに対して表明することができます。したがってコンパイラは、エイリアスが生成されるために行われなかった最適化を実行できます。

Show/hide使用法

キーワード __restrict および __restrict__ は、restrict の同義語としてサポートされ、常に使用することができます。

C90 または C++ では、--restrict を指定することによって restrict キーワードを使用できるようになります。

Show/hide制約条件

事実上、この意思表示は、もしそれに反した場合は定義されていない動作が生じることを自覚していると、コンパイラに対して伝えていることになります。

Show/hide

以下の例では、関数パラメータ配列に restrict キーワードを適用しています。

void copy_array(int n, int *restrict a, int *restrict b)
{
    while (n-- > 0)
        *a++ = *b++;
}

以下の例では、ローカル変数の形で存在する各ポインタに対して restrict キーワードを適用しています。

void copy_bytes(int n, int *a, int *b)
{
  int *restrict x;
  int *restrict y;

    x = a;
    y = b;

    while (n-- > 0)
     *q++ = *s++;
}

Show/hide関連項目

Copyright © 2010 ARM. All rights reserved.ARM DUI 0491BJ
Non-ConfidentialID011811