2

当通过 GCC 编译器编译它时,我已经研究了在 C++ 代码中 __restricting 某些指针的效果。

事实证明,不仅运行时保持不变,而且可执行文件似乎没有改变,字节大小与以前完全相同。

我的 GCC 版本是

gcc version 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux)

尽管它在解析时接受了这个 C++ 扩展,但在组装代码时似乎并不考虑它。所以有一个原因,编译器不知道如何使用这个语义信息,或者处理这个信息被完全禁用。

该代码执行了大量的数字运算,它希望启用它以用于测试目的。你能帮我吗?

4

1 回答 1

7

restrict限定符基本上是用户帮助编译器执行某些与别名相关的优化的一种方式。只有当这些优化机会已经存在于代码中时,它们才会产生效果,因此restrict在编译器以前必须使用“更安全”(非优化)代码生成的情况下,使用简单地启用它们。在其他情况下restrict根本没有效果。

因此,您restrict在代码中添加了一些限定符。但是它们中的任何一个是否在它们真正重要的上下文中使用,即它们实际上给编译器更多的自由来优化代码?如果没有,你不应该期望你的代码会改变。

于 2010-08-19T15:03:03.313 回答