在示例代码中,'define'宏用于定义类C++,并使用纯虚函数

  • 本文关键字:C++ 函数 用于 代码 define 定义 c++ stl
  • 更新时间 :
  • 英文 :


https://github.com/Alinshans/MyTinySTL在这个链接的测试.h中,我有两个疑问。

  1. 我似乎找不到TestCase::Run的定义
  2. 无法理解以下代码的含义
#define TESTCASE_NAME(testcase_name) 
testcase_name##_TEST

#define MYTINYSTL_TEST_(testcase_name)                        
class TESTCASE_NAME(testcase_name) : public TestCase {        
public:                                                       
TESTCASE_NAME(testcase_name)(const char* case_name)       
: TestCase(case_name) {};                             
virtual void Run();                                       
private:                                                      
static TestCase* const testcase_;                         
};                                                            

TestCase* const TESTCASE_NAME(testcase_name)                  
::testcase_ = UnitTest::GetInstance()->RegisterTestCase(  
new TESTCASE_NAME(testcase_name)(#testcase_name));    
void TESTCASE_NAME(testcase_name)::Run()

您看不到TestCase::Run的定义,因为您应该自己提供一个。

请注意,宏定义如何以void TESTCASE_NAME(testcase_name)::Run()结束。这不是一个有效的C++语句。您需要跟进函数体,它将是Run方法定义的主体:

MYTINYSTL_TEST_(some_unique_name_you_came_with)
{
// Some code for testing
// 
}

MYTINYSTL_TEST_宏将生成TestCase的一个唯一子类,将其注册到某个测试框架中(在静态成员创建期间(,该框架稍后将运行您提供的主体。

最新更新