C++ 定义自定义异常类型的宏-错误做法

C++ 定义自定义异常类型的宏-错误做法,c++,c++11,macros,C++,C++11,Macros,使用下面这样的c宏来定义异常是一种不好的做法吗 #define CUSTOM_EXCEPTION(name, msg) class name : std::exception { \ virtual const char* what() const throw() { \ return #msg; \ } \ }; 我有点喜欢使用宏的想法,因为它很枯燥,但我听说过使用宏使代码无法维护的不好的事情。有没有更好的方法来定义返回自定义消

使用下面这样的c宏来定义异常是一种不好的做法吗

#define CUSTOM_EXCEPTION(name, msg) class name : std::exception { \
        virtual const char* what() const throw() { \
            return #msg; \
        } \
    };

我有点喜欢使用宏的想法,因为它很枯燥,但我听说过使用宏使代码无法维护的不好的事情。有没有更好的方法来定义返回自定义消息的简单类型宏?

好的,什么时候说可读性>可写性?你在做什么需要速度吗。。。?更少的分析-更少的可追踪性-更难调试-可能会导致严重的错误。SMACROS是一个强大但原始的工具。使用它们很容易使代码更难阅读,也更容易出错。我看不出这个问题。
noexcept
>
throw()