如何将assert宏实现为方法?

Ami*_*yan 1 c++ methods macros assert

我希望将实现断言宏作为C++中的方法,如.NET Framewrk.

例如在C#中,我们可以像这样调用assert方法:

Debug.Assert(index > -1);
Run Code Online (Sandbox Code Playgroud)

我希望实现断言这样的东西:

#include <assert.h>
class debug
{
  public:

    static void my_asset(<condition>) // like assert macro
    {
      // ?
    }
};
Run Code Online (Sandbox Code Playgroud)

使用此课程时:

debug::my_asset(index > -1); // Actually should be called assert(index > -1);
Run Code Online (Sandbox Code Playgroud)

谢谢

编辑:

我想在调用时debug::my_asset(index > -1);,它显示正确的文件名和行号,它的工作方式类似于C++资产宏.

Ken*_*oom 6

assert assert(in <assert.h><cassert>)中有几个特性值得关注:

  • 当您编译发布版本时,根本不评估断言测试.
  • 断言失败时打印的错误消息可以告诉您断言失败的文件和行号
  • 它还可以告诉您失败的确切代码.

如果不使用宏,则无法在C++中执行这些操作.