Статус tgmath.h с точки зрения переносимости между компиляторами C, C++

Я реализую DSL с помощью компилятора, который транслирует его на C. Наш код автономен: мы предоставляем пользователям только одну основную точку входа (т. е. ), все входные данные задаются в глобальных переменных с простыми типами (bool, signed/unsigned int, double, float, structs и arrays; но без указателей и без функций в качестве входных данных).

Нашей основной целью является C99, но некоторые люди используют компилятор arduino для кода, который мы производим, поэтому предпочтительна максимальная переносимость между стандартами и компиляторами.

Я вижу, что C99 определяет несколько вариантов функций на основе типа аргументов (например, , , ).

Чтобы избежать потери точности, наш переводчик может, основываясь на типах аргументов, выбрать один из этих вариантов. Однако все поддерживаемые нами функции также определяются с помощью , поэтому более простым способом было бы использовать стандартное имя для каждой (например, ) и дайте выбрать подходящий вариант на основе типов аргументов.

Я читал в Интернете, что мнения и поддержка неоднозначны. Некоторые говорят, что это уродливо и что не все компиляторы его поддерживают.

полагается на плохая идея? Это вызовет у нас головную боль в будущем?

1 ответ

Компилятор , совместимый с C99 (страницы 165 и 335 в стандарте), будет включатьтак полагаясь на tgmath.hв порядке. Это стандартный заголовок начиная с C99.

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