gpt4 book ai didi

c - C中 "restrict"的相反关键字?

转载 作者:太空狗 更新时间:2023-10-29 17:26:22 26 4
gpt4 key购买 nike

由于严格的别名可能有助于编译器更好地优化,C99 引入了 restrict 关键字,如果程序员保证不会通过指向不同的指针访问变量,它可以用作变量的限定符类型。然而,由于多种原因,不同类型之间的类型转换是不可避免的,这将使编译器假定一个指针不是另一个指针的别名。因此,解决方法是通过传递 -fno-strict-aliasing(GCcflags)来禁用全局严格别名优化。这完全没有意义,因为可能只有两个指针不应该被完全优化。因此,为什么不引入一个相反的关键字 restrict 来告诉编译器不要假定这两个指针指向不同的地址。这有点类似于 volatile 所做的,它告诉编译器这个变量发生了巨大的变化,所以以特殊的方式对待它们。是否可以创建这样的关键字?

编辑:有一种方法可以解决这个问题。请看yano's在下面评论。

最佳答案

您可以在 GCC 中使用 typedef int __attribute__ ((__may_alias__)) int_a;
请注意,-fstrict-aliasing 在 GCC -O2 或更高版本中默认启用。

参见 gcc.gnu.org了解更多详情。

关于c - C中 "restrict"的相反关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39373964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com