gpt4 book ai didi

ios - NULL 空操作在 GCC/Clang 上编译成什么?

转载 作者:行者123 更新时间:2023-11-29 02:59:56 24 4
gpt4 key购买 nike

我的代码中有几个调试函数,当指定构建标志 -release 时,调用全部替换为 NULL(为了性能);例如:

self.condition ? NULL : NULL;

其中第一个和第二个 NULL 是在预处理中被替换的函数调用。

我的问题是,如果有的话,它会编译成什么?我正在使用 Apple 的 LLVM 5.1;显然对我们来说这是一个无操作,那么这是否意味着它不会从这一行生成任何指令?我希望是这样,因为没有充分的理由实际执行任何事情。

最佳答案

我猜这取决于上下文。

因为 self.condition[self condition] 的别名,只有当编译器可以肯定地断言 [self condition] 没有副作用。如果编译器无法确定没有副作用,则可以将整个语句优化为 [self condition]; 产生轻微的优化。

_条件? NULL : NULL; 应该被安全地删除,因为没有关联的方法调用可能有副作用。

关于ios - NULL 空操作在 GCC/Clang 上编译成什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23435987/

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