У меня есть несколько строк кода ассемблера в файле .s. Всего несколько процедур, которые мне нужно вызвать. Он отлично работает при создании устройства, однако, когда я переключаюсь на iPhone Simulator, я получаю ошибки «без такой инструкции». Я попытался собрать части .s файла условно с тем, что я знаю:Условная компиляция в коде ассемблера (.s) для iPhone - как?
#if !TARGET_IPHONE_SIMULATOR
Но ассемблер не признает эти директивы препроцессора (конечно), и ни один из условных методов компиляции для ассемблера, что я не мог вспомнить, или найти работу, так что теперь я почесываю голову о том, как избежать компиляции кода ассемблера при создании для Simulator. Я также не вижу вариант проекта в Xcode, который позволит мне скомпилировать файл или нет в зависимости от целевой платформы.
РЕШИТЬ:
Все, что я не хватало надлежащего #import в файле ассемблера. Я не думал добавлять его, потому что синтаксис Xcode выделял любую директиву препроцессора в зеленом (комментарий), что заставило меня предположить, что эти команды не распознаются, когда на самом деле они работают нормально.
Это работает:
#import "TargetConditionals.h"
#if !TARGET_IPHONE_SIMULATOR
... asm code here ...
#endif
Я считаю, что инструменты, вызываемые XCode, используют один и тот же препроцессор для файлов .s и .c (если вы не изменили значения по умолчанию); вы уверены, что не ошиблись, когда попробовали это? –