0

我终于对 C99 的一些特性产生了兴趣,但现在我无法理解 C99 草案的相关部分。

我知道restrict 是一个承诺,即两个restrict 限定的指针不会指向同一个对象,但是我对什么是允许的和不允许的内容的更详细和具体的解释的尝试很少出现。

所以我的问题是:有人可以提供关于限制指针的详细信息的可读、可理解的解释,例如我什么时候可以和不能使用它们,什么时候是 UB 等等。越详细越好。我厌倦了看着 C99 草案让我头疼。

谢谢。

4

1 回答 1

0

这是摘录自: http ://en.wikipedia.org/wiki/Restrict

关于“限制”修饰符

“在 C 编程语言中,按照 C99 标准,restrict 是一个可以在指针声明中使用的关键字。restrict 关键字是程序员给编译器的意图声明。它表示在指针的生命周期内, 只有它或直接从它派生的值(例如指针 + 1)将用于访问它指向的对象。这限制了指针别名的影响,有助于优化。如果不遵循意图声明并且对象被一个独立的指针访问,这将导致未定义的行为。在 C 中使用 restrict 关键字原则上允许非钝 C 实现与用 Fortran 编写的相同程序相同的性能。[1]"

于 2015-02-16T01:37:29.893 回答