gpt4 book ai didi

c - 当不支持重载函数时,C 中的 math.h 函数如何接受多种类型的参数?

转载 作者:行者123 更新时间:2023-11-30 18:38:48 25 4
gpt4 key购买 nike

例如,C99 中的 pow() 采用 double、float 或 long double 参数。当不支持重载函数时,如何以简单的方式实现?

最佳答案

为每个函数使用不同的名称,例如

float powf(float base, float exponent);
double pow(double base, double exponent);
long double powl(long double base, long double exponent);

除此之外,类型通用数学( <tgmath.h> ,C11 中的第 7.25 节和 C99 中的第 7.22 节)定义了一些宏,这些宏可以在不需要函数重载的情况下完成脏工作。您可以查看this链接来自 this回答查看内部结构,但基本上它减少为像这样的检查

sizeof (X) == sizeof (__real__ (X))

(__typeof__ (X))1.1 == 1

取自标准的示例:

示例与声明

#include <tgmath.h>
int n;
float f;
double d;
long double ld;
float complex fc;
double complex dc;
long double complex ldc;

exp(n) invokes exp(n) (function)
acosh(f) invokes acoshf(f)
sin(f) invokes sin(d) (function)
atan(ld) invokes atanl(ld)
// and so on

关于c - 当不支持重载函数时,C 中的 math.h 函数如何接受多种类型的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32428473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com