gpt4 book ai didi

c++ - 预处理/预编译 - 用常量替换变量

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:54 30 4
gpt4 key购买 nike

我正在开发一个函数,该函数采用众所周知的参数范围,但我不想为每种情况编写许多不同的函数。有没有一种方法可以定义函数的“模式”并使预编译器根据这种模式生成函数?

例子。我有以下功能:

int addition_in_range_of_10 (int a, int b) {    return a+b; }

我想生成以下函数:

int addition_in_range_of_10_1_1 () {
return 2;
}

int addition_in_range_of_10_1_2 () {
return 3;
}

int addition_in_range_of_10_1_3 () {
return 4;
}

...

int addition_in_range_of_10_10_10 () {
return 20;
}

我想使用指向函数的指针运行这些函数:

int (*funp)();
if(...) {
funp = addition_in_range_of_10_1_3;
}
funp();

现在我编写了自己的应用程序,这些应用程序从下面列举的模板函数执行,但是将代码复制到我的应用程序然后生成 cpp 文件然后编译并不方便。我想让它自动化。

//{A=1,2,3,4,5,6,7,8,9,10;B=1,2,3,4,5,6,7,8,9,10}
int addition_in_range_of_10_{A}_{B} () {
return {A}+{B};
}

这是我的问题。是否有任何预处理库、机制或其他可以自动完成的东西?

出于性能原因,我只想从代码中删除变量。如果使用常量而不是变量,这些函数会更复杂并且工作得更好,并且因为这些变量只使用一些众所周知的值,所以我想将它们更改为常量而不是变量。

最佳答案

对于 C++

#include <iostream>

template <int A, int B>
int addition_in_range_of_10(void){
return A + B;
}

int main(){
int (*funp)();
if(1) {
funp = addition_in_range_of_10<1,3>;
}
std::cout << funp() << std::endl;
return 0;
}

关于c++ - 预处理/预编译 - 用常量替换变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23181359/

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