注: Xcode の最新バージョンに同梱されている目的の C コンパイラを使用しています。
これが合法である理由は次のとおりです。
void verySpecial(const float* __restrict foo, const int size) {
for (int i = 0; i < size; ++i) {
// ... do special things ...
++foo; // <-- Should be illegal to modify const pointer?
}
}
ただし、typedef を使用すると、私がすべきだと思うことを実行します。
typedef float* __restrict RFloatPtr;
void verySpecial(const RFloatPtr foo, const int size) {
for (int i = 0; i < size; ++i) {
// ... do special things ...
++foo; // <-- Now this is a compiler error.
}
}
では、typedef の場合と何が違うのか、何がわからないのでしょうか? __restrict について読むと頭が痛くなり、ここでそれが重要なのかどうかさえわかりません。