c++ - Mavericks 的 g++ 编译问题

标签 c++ g++ osx-mavericks

我使用 ezlogger 库为我们的项目记录日志。升级 OSX Maverick 后我无法编译代码,g++ 编译器在编译日志记录宏时抛出错误。错误信息:

In file included from ./../ezlogger/ezlogger_headers.hpp:16:
./../ezlogger/ezlogger.hpp:113:29: error: use of undeclared identifier 'get_verbosity_level_tolerance'
                        if (m_verbosity_level <= get_verbosity_level_tolerance())
                                                 ^
./../ezlogger/ezlogger.hpp:118:6: error: use of undeclared identifier 'get_log_stream'
                                        get_log_stream() << Data;
                                        ^
./../ezlogger/ezlogger.hpp:124:29: error: use of undeclared identifier 'get_verbosity_level_tolerance'
                        if (m_verbosity_level <= get_verbosity_level_tolerance())
                                                 ^
./../ezlogger/ezlogger.hpp:129:6: error: use of undeclared identifier 'get_log_stream'
                                        get_log_stream() << func;
                                        ^
./../ezlogger/ezlogger.hpp:135:29: error: use of undeclared identifier 'get_verbosity_level_tolerance'
                        if (m_verbosity_level <= get_verbosity_level_tolerance())
                                                 ^
./../ezlogger/ezlogger.hpp:140:29: error: use of undeclared identifier 'get_verbosity_level_tolerance'
                        if (m_verbosity_level <= get_verbosity_level_tolerance())
                                                 ^
./../ezlogger/ezlogger.hpp:145:29: error: use of undeclared identifier 'get_verbosity_level_tolerance'
                        if (m_verbosity_level <= get_verbosity_level_tolerance())
                                                 ^
./../ezlogger/ezlogger.hpp:151:29: error: use of undeclared identifier 'get_verbosity_level_tolerance'
                        if (m_verbosity_level <= get_verbosity_level_tolerance())
                                                 ^

get_verbosity_level_tolerance() 的代码如下:

    struct ezlogger_verbosity_level_policy
    {
            static inline verbosity get_verbosity_level_tolerance(){return set_or_get_verbosity_level_tolerance(true);}
            static void set_verbosity_level_tolerance(verbosity NewValue){set_or_get_verbosity_level_tolerance(false, NewValue);}
    private:
            inline static verbosity initial_verbosity_level(){return log_default_verbosity_level;}
            static verbosity set_or_get_verbosity_level_tolerance(bool GetLevel, verbosity NewValue = log_default_verbosity_level)
            {
                    static verbosity verbosity_level = initial_verbosity_level();
                    if (!GetLevel) verbosity_level = NewValue;
                    return verbosity_level;
            }
    };

有什么想法可以解决这个问题吗?

最佳答案

get_verbosity_level_tolerance() 是结构 ezlogger_verbosity_level_policy 的成员。

尝试调用 ezlogger_verbosity_level_policy::get_verbosity_level_tolerance() 而不是只调用 get_verbosity_level_tolerance()

关于c++ - Mavericks 的 g++ 编译问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19830480/

相关文章:

c++ - 从 std::vector 继承时 g++ 7 中的 undefined reference

c++ - 在 Mac OS X 上使用 SWIG 编译 C++

macos - Mac OSX mavericks 中未找到 Maven

c++ - 赛通 : exposing C++ classes with nested typedef (s)

c++ - 对象作为 CMap 中的键

c++ - 请帮助解释这些代码,也许是 C++ 中的 'None'?

ubuntu - 无法在 ubuntu 20.04 中安装 g++ 和 build-essentials

ios - OSX Mavericks 上的 sloccount 问题

java - OSX Mavericks 打开 .jnlp 1.7 U 45

C++:调整 Tesseract 以去除噪声元素