我正在研究一个c ++单元测试器(主要是作为练习)并对我的实现有一些疑问。 我希望能够重载我的自定义断言,所以我决定将它们实现为我在命名空间中包含的函数。
我目前的实施如下:
Tester.h
#include <string>
#define INFO __FILE__, __LINE__
namespace Tester
{
void Assert(char const* input, char const* file_path, int line_number, std::string error_message);
...more overloaded Asserts and some Log functions...
}
当我调用该函数时:
#include "Tester.h"
...code...
Tester::Assert(false, INFO, "Some message");
...code...
这有效,但我不确定'INFO'宏是不错的做法。 我欢迎所有关于此实现的建议和指示,并随时告诉我它是否没有意义,我应该做一些完全不同的事情;)
答案 0 :(得分:0)
作为一个宏的INFO看起来非常好。另一种选择,我更喜欢有一个宏
#define TEST_ASSERT(condition, message) Tester::Asssert(condition, __FILE__, __LINE__, message)
或类似的东西。
如果你有不同数量的参数,这样的东西可能会起作用:
#define TEST_ASSERT(condition, ...) Tester::Asssert(condition, __FILE__, __LINE__, __VA_ARGS__)
假设您的编译器足够新,那就是。