注意:我使用的是最新版本的 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 让我的大脑受伤,我什至不确定这是否重要。