在编译时创建函数列表
Create a list of function at compile time
对于一个小型测试框架,我试图在编译时创建一个函数列表。
我正在创建一个带有宏的测试函数,并希望能够从 main 调用所有添加的 testx。
#define ADD_TEST(X) my_test_##X
ADD_TEST(foo){
ASSERT_EQ(1, 2);
}
ADD_TEST(bar){
...
}
int main (void){
something_calling_all_my_tests();
return 0;
}
C++ 中的完整示例是 http://pastebin.com/C5mmcYDD
问候
使用 attribute ((constructor)) 我们可以 运行 main 之前的函数并注册每个测试函数。这不是编译时间,但到目前为止符合我的需要。
#define ADD_TEST(TEST_NAME) void test_##TEST_NAME (void); \
void t_##TEST_NAME##_registerFunction (TestFunction test_##TEST_NAME)__attribute__ ((constructor)); \
void t_##TEST_NAME##_registerFunction (TestFunction test_##TEST_NAME){n++; printf("running %s\n", #TEST_NAME);} \
void test_##TEST_NAME (void)
对于一个小型测试框架,我试图在编译时创建一个函数列表。 我正在创建一个带有宏的测试函数,并希望能够从 main 调用所有添加的 testx。
#define ADD_TEST(X) my_test_##X
ADD_TEST(foo){
ASSERT_EQ(1, 2);
}
ADD_TEST(bar){
...
}
int main (void){
something_calling_all_my_tests();
return 0;
}
C++ 中的完整示例是 http://pastebin.com/C5mmcYDD
问候
使用 attribute ((constructor)) 我们可以 运行 main 之前的函数并注册每个测试函数。这不是编译时间,但到目前为止符合我的需要。
#define ADD_TEST(TEST_NAME) void test_##TEST_NAME (void); \
void t_##TEST_NAME##_registerFunction (TestFunction test_##TEST_NAME)__attribute__ ((constructor)); \
void t_##TEST_NAME##_registerFunction (TestFunction test_##TEST_NAME){n++; printf("running %s\n", #TEST_NAME);} \
void test_##TEST_NAME (void)