gpt4 book ai didi

c++ - 是否存在近似等同于运行时#ifdef 的C++ 编程技术?

转载 作者:太空宇宙 更新时间:2023-11-03 10:44:48 25 4
gpt4 key购买 nike

例如,我在一些代码中有一个函数调用,我希望能够按我喜欢的方式启用/禁用。

通常我可以只使用 if,但它会每次检查函数是否可以运行,这是我不想要的。我只是希望代码永远不会进行该检查。

ifdef block 可能很乱而且很脏,它们堆积起来使代码难以阅读。

我不能用某种模板来解决这个问题吗?我知道我可以制作多个 lambda 来构建我想要的可能函数调用的每个版本。

这是静态 if 的意思吗?因为在我看来,我想做的是自修改代码,我不知道这是个好主意还是可能。

最佳答案

假设这个决定需要在运行时做出...

虽然这个问题有很多复杂的解决方案,但函数指针是一种简单的方法(尽管我怀疑它的性能明显优于条件指针)。

#include <functional>
#include <iostream>

void option1(int) {
std::cout << "option 1\n";
}

void option2(int) {
std::cout << "option 2\n";
}

std::function<void(int)> fp(option1);

int main() {
fp(3);

// Let's change what fp does:
fp = option2;
fp(3);
}

关于c++ - 是否存在近似等同于运行时#ifdef 的C++ 编程技术?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24702000/

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