Какими точными элементами вы управляете?
По данным на сайте Microsoft :
Функция _control87
получает и устанавливает управляющее слово с плавающей запятой. Управляющее слово с плавающей точкой позволяет программе изменять режимы точности, округления и бесконечности в математическом пакете с плавающей точкой. Вы также можете маскировать или снимать маску с исключений с плавающей точкой, используя _control87
. Если значение для маски равно 0, _control87
получает управляющее слово с плавающей запятой. Если маска ненулевая, устанавливается новое значение для контрольного слова: для любого бита, который включен (равен 1) в маске, соответствующий бит в new используется для обновления контрольного слова. Другими словами, fpcntrl = ((fpcntrl & ~mask) | (new & mask))
, где fpcntrl - управляющее слово с плавающей точкой.
Обратите внимание на ключевое слово "библиотека". Эта функция управляет библиотекой Microsoft , которая может отсутствовать на Mac.
Я предлагаю следующее:
- Управление чипом с плавающей запятой
сам Mac
- Или используйте компилятор Microsoft для Mac
- Или найдите способ переместить
управление с плавающей запятой к более
общее место в вашей программе.
Лучший совет, который я могу дать, - сводить как можно больше кода в соответствие со стандартом и проблемами, связанными с конкретной платформой или библиотекой. Для тех функций, которые связаны с особенностями платформы, переместите их в свои собственные исходные файлы / единицы перевода. Создайте копии этих функций, по одной для каждой платформы. Пусть линкер решит, какие из них использовать.
Удачи.