iphone - iPhone 的汇编 (.s) 代码中的条件编译 - 如何进行?

标签 iphone assembly compilation conditional-statements arm

我在 .s 文件中有几行汇编器 Arm 代码。只是我需要调用的一些例程。在为设备构建时它工作正常,但是当我切换到 iPhone Simulator 时,我收到“没有这样的指令”错误。我尝试根据我所知道的有条件地编译 .s 文件的部分内容:

#if !TARGET_IPHONE_SIMULATOR

但是汇编器无法识别这些预处理器指令(当然),而且我记得或发现的汇编器条件编译技术都不起作用,所以我现在正在绞尽脑汁地思考如何避免编译该汇编器构建模拟器时的代码。我在 Xcode 中也没有看到允许我根据目标平台编译或不编译文件的项目选项。

已解决:

我所缺少的是汇编程序文件中正确的#import。我没有想到添加它,因为 Xcode 语法以绿色突出显示了任何预处理器指令(注释),这让我认为这些命令未被识别,而实际上它们工作得很好。

这有效:

#import "TargetConditionals.h"

#if !TARGET_IPHONE_SIMULATOR

... asm code here ...

#endif

最佳答案

您可以使用预处理器宏来完成此操作。它们在 TargetConditionals.h TARGET_IPHONE_SIMULATOR 中定义,应该在那里! (但是您确实需要 #include 它。)

关于iphone - iPhone 的汇编 (.s) 代码中的条件编译 - 如何进行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1709850/

相关文章:

iphone - 允许用户通过点击选择 UIPickerView 行

ios - 如何检测iOS中的wifi网络变化

assembly - 如何提取位于 AL 中定义的索引位置的字节

c++ - 尝试编译 C++ 程序后出错

c++ - 在类中声明但未定义的方法

command-line - 为什么不编译其他模块?

iphone - 示例代码MoviePlayer问题

iphone - FaceTime录音机

assembly - 在汇编中编写 __attribute((constructor)) 函数 - 可以完成吗?