gpt4 book ai didi

c++ - 使用宏编译时使用用户定义的数学函数,或仅使用c++中标准数学库中的函数

转载 作者:行者123 更新时间:2023-12-02 09:50:28 32 4
gpt4 key购买 nike

我有自己的f_sin(x)函数实现(与sin(x)in的类似实现),当我使用名为MYMATH的宏进行编译时,我想使用该函数。如果未定义MYMATH,我想使用math.h中的函数sin(x)

任何线索如何去?

注意我不能更改f_sin(x)或sin(x)的函数定义中的任何内容。

最佳答案

您可以尝试为每个函数使用宏,然后根据宏MYMATH对其进行定义。另外,如果您希望避免使用此类宏,则可以使用通用lambda作为包装器。

MyMath.hpp

1.-每个功能都有宏

#ifdef MYMATH
#define imp_sin(x) f_sin(x)
#else
#include <cmath>
#define imp_sin(x) std::sin(x)
#endif

2.使用通用lambda(C++ 14)
#define glambda(x) [](auto y){ return x(y); }
#ifdef MYMATH
auto imp_sin = glambda(f_sin);
#else
#include <cmath>
auto imp_sin = glambda(std::sin);
#endif
#undef glambda //Or not if you want to keep this helper

用法main.cpp
#include "MyMath.hpp"
int main(int, char**) {
imp_sin(3.4f);
return 0;
}

关于c++ - 使用宏编译时使用用户定义的数学函数,或仅使用c++中标准数学库中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59991670/

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