Tag: 限制 限定符

将受限制的指针指定给另一个指针是否合法,并使用第二个指针修改该值?

以下方法是否尊重“限制”合同? void fun(int* restrict foo) { int* bar = foo + 32; for (int i = 0; i < 32; ++i) *bar = 0; } 我的猜测是否定的,但我需要澄清一下。

在function原型中是顶级易失性还是​​限制显着?

以下原型有什么实际区别吗? void f(const int *p); void f(const int *restrict p); void f(const int *volatile p); C11 6.7.6.3/15(最后一句)部分说,顶级限定符不是为了确定类型兼容性而考虑的,即允许函数定义在其参数上具有与原型不同的顶级限定符。声明了。 然而(与C ++不同)它并没有说它们被完全忽略了。 在const的情况下,这显然没有实际意义; 但是在volatile和restrict的情况下可能存在差异。 例: void f(const int *restrict p); int main() { int a = 42; const int *p = &a; f(p); return a; } 原型中是否存在restrict允许编译器优化读取a for return a; ? ( 相关问题 )