【问题标题】:C++ how to prevent invoking a method more than one in Compile-time?C ++如何防止在编译时调用多个方法?
【发布时间】:2020-04-05 20:35:23
【问题描述】:

我有一个方法,我想强制用户在编译时最后调用它。 目前我有一个正确的实现,但它对运行时执行很有用。

有没有一种干净的方法可以在编译时检查这个问题(只需一次调用)?

static void set_logging_type(LOG_TYPE type)
{
    static bool select_type_done{false};

    if (!select_type_done)
    {
        log_type = type;
        select_type_done = true;
        return;
    }
    else
    {
        throw std::runtime_error("logging type is selected before!");
    }
}

提前致谢。

【问题讨论】:

  • 不,没有合适的方法来检查它。但是,您可以从静态变量中调用它 - 这减少了用户的要求。

标签: c++ g++ compile-time error-checking


【解决方案1】:

有没有一种干净的方法可以在编译时检查这个问题(只需一次调用)?

没有。

确定set_logging_type() 被调用多少次(或是否调用)等同于halting problem,因此无法确定(通常)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 2022-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多