10.33 __attribute__((const)) 関数属性

const 関数属性は、関数が引数のみを確認し、戻り値以外には作用しないことを指定します。つまり、関数はグローバルメモリの読み出しまたは変更を行いません。

渡された引数に対してのみ演算を行う関数は、共通部分式の削除とループの最適化の対象になります。
関数によるグローバルメモリの読み出しは許可されていないため、これは __attribute__((pure)) よりも厳密なクラスです。

この関数属性は、ARM コンパイラでサポートされる GNU コンパイラの拡張機能です。同等のキーワード __pure があります。

#include <stdio.h>

// __attribute__((const)) functions do not read or modify any global memory
int my_double(int b) __attribute__((const));
int my_double(int b) {
  return b*2;
}

int main(void) {
    int i;
    int result;
    for (i = 0; i < 10; i++)
    {
       result = my_double(i);
       printf (" i = %d ; result = %d \n", i, result);
    }
}
関連する概念
5.17 同じ引数を使用して呼び出されたときに同じ結果を返す関数
関連する参考文書
10.48 __attribute__((pure)) 関数属性
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.