1 #define BOTAN_REGISTER_TEST(type, Test_Class) \
namespace { Test::Registration reg_ ## Test_Class ## _tests(type, new Test_Class); } \BOTAN_FORCE_SEMICOLON
2 #define BOTAN_FORCE_SEMICOLON struct BOTAN_DUMMY_STRUCT
3 BOTAN_REGISTER_TEST("hash", Hash_Function_Tests);
namespace {
Test::Registration reg_ ## Hash_Function_Tests ## _tests("hash", new Hash_Function_Tests);
}struct BOTAN_DUMMY_STRUCT
4 ##是一个连接符号,用于把参数连在一起
#是“字符串化”的意思。出现在宏定义中的#是把跟在后面的参数转换成一个字符串
#define paster( n ) printf( "token " #n" = %d\n ", token##n )
所以paster(9);就是相当于 printf("token 9 = %d\n",token9);
====================
namespace {
Test::Registration reg_Hash_Function_Tests_tests("hash", new Hash_Function_Tests);
}struct BOTAN_DUMMY_STRUCT