首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从跨C、C++编译器的可移植性看tgmath.h的状态

从跨C、C++编译器的可移植性看tgmath.h的状态
EN

Stack Overflow用户
提问于 2022-04-21 21:53:48
回答 1查看 65关注 0票数 0

我正在用编译器实现DSL,将其转换为C。我们的代码是独立的:我们只为用户提供一个主要入口点(即void step()),所有输入都是以简单类型的全局变量(bool、有符号/无符号的into、double、float、structs和数组;但没有指针,也没有函数作为输入)。

我们的主要目标是C99,但是有些人使用arduino编译器来编写我们生成的代码,因此最好使用跨标准和编译器的最大可移植性。

我看到C99的math.h基于参数的类型(例如,sinsinfsinl)定义了多个函数的变体。

为了避免丢失精确性,我们的译者可以根据参数的类型选择其中的一个变体。但是,我们支持的所有函数也都是由tgmath.h定义的,因此更简单的方法是为每个函数使用标准名称(例如,sin),并让tgmath.h根据参数的类型选择适当的变量。

我在网上读到,关于tgmath.h的意见和支持是混合的。有些人说它很难看,并不是所有的编译器都支持它。

依赖tgmath.h是个坏主意吗?这会让我们头疼吗?

EN

回答 1

Stack Overflow用户

发布于 2022-04-21 22:13:02

符合标准的C99 (标准的第165和335页)编译器将包括tgmath.h,因此依赖tgmath.h是可以的。这是自C99以来的标准标头。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71961297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档