tgmath.h не работает, если модули включены

Я смотрел на использование tgmath.h иметь дело с CGFloat typedef float/double беспорядок при работе с arm64.

В этом ответе есть довольно хорошее описание того, как его использовать, за исключением того, что он совсем не работает для меня. Несмотря ни на что, мой код все еще вызывал math.h функции.

Потратив некоторое время на просмотр всех настроек компилятора проекта, я обнаружил, что отключение функции "Модули" ( @import vs #import - iOS 7) заставляет все это работать. Точнее, опция в настройках проекта называется Enable Modules(C and Objective-C) в Apple LLVM 5.1 - Language - Modules падать.

Чтобы увидеть быстрый пример этой проблемы, загрузите проект, использующий tgmath, такой как MBProgressHUD, и посмотрите, что произойдет, когда вы включите настройку проекта модулей. tgmath.h звонки заменяются обычными math.h звонки.

Мой вопрос:

  1. Почему модули не позволяют должным образом импортировать tgmath?

  2. Есть ли способ обойти это и использовать как tgmath, так и модули? Я хотел бы все еще быть в состоянии использовать их.

2 ответа

Я не уверен, что является причиной проблемы, но в качестве обходного пути вы могли бы по крайней мере отключить модули только для тех файлов, которые вы используете tgmath.h:

  • Перейдите на вкладку "Этапы сборки" цели в XCode.
  • На этапе "Скомпилировать источники" найдите исходные файлы.
  • Дважды щелкните исходный файл и введите -fno-modules во всплывающем окне "Флажки компилятора" отключить модули Clang для этого файла.

По крайней мере, таким образом вы все равно получите преимущества модулей в большей части вашего проекта. (Это при условии, конечно, вам не нужно tgmath.h в большинстве ваших исходных файлов.)

Возможно, он уже находится в вашей математической библиотеке под именем ctgmath: Link

Другие вопросы по тегам