gpt4 book ai didi

c++ - 是否可以在编译时检测函数是否被调用

转载 作者:行者123 更新时间:2023-12-05 08:29:27 27 4
gpt4 key购买 nike

我正在开发一个 C++ 库,有两个函数:func1func2

如果开发人员忘记在调用 func2 之前调用 func1,我想生成一个编译时错误:

这样就可以了:

func1();
func2(); // OK

但这会失败:

func2();  // ERROR, you forget to call func1()

当然,很容易产生运行时错误,但我更愿意产生编译时错误。

我试过如下但它不起作用,因为我不能修改 constexpr 变量:

static constexpr bool b {false};

void func1() {
b = true; // ERROR!
}

typename<std::enable_if_t<b == true>* = nullptr>
void func2() {}

我不太擅长元编程。我想知道在这种情况下是否可能产生编译时错误。

最佳答案

使时间耦合显式:

  • func1 返回一个应该被 func2 使用的类型:
struct func1_result {
// Possibly constructors private, and friendship to `func1`.
//...
};

func1_result func1();
void func2(const func1_result&);

因此,如果不先创建 func1_result(由 func1 返回),您就无法调用 func2

关于c++ - 是否可以在编译时检测函数是否被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70256265/

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