gpt4 book ai didi

c++ - 如何在编译时检测到 'strict aliasing'?

转载 作者:搜寻专家 更新时间:2023-10-31 00:06:06 28 4
gpt4 key购买 nike

' Strict aliasing ' 优化需要特别注意源代码,s.a.使用 union 而不是指针转换。有没有一种方法可以使用预处理器指令 (#if/else) 来检测编译器是否正在尝试进行此类优化?

我想为不关心的处理器和编译器维护旧的和非严格别名准备的代码路径。似乎更快。

编辑:GCC predefined macros似乎与别名没有任何关系。换句话说,我对 gcc 4.x 最感兴趣,但也对通用解决方案(似乎不存在)感兴趣。

最佳答案

完全依赖于实现 - 您需要检查特定编译器的文档。当提出这样的问题时,最好提及您正在使用的编译器。

一种半可移植的方法是从您的 Makefile 中执行此操作 - 为别名和非别名版本定义不同的目标,并为别名版本定义您自己的 STRICT_ALIASING(或其他)预处理器符号。

关于c++ - 如何在编译时检测到 'strict aliasing'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/725138/

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