2016-04-03 71 views
0

işlevinin bir listesini oluşturun. Derleme zamanında işlev listesi oluşturmaya çalışıyorum. Bir makroyla bir test işlevi oluşturuyorum ve eklenen tüm testx'i ana bilgisayardan arayabilmek istiyorum.Küçük bir sınama çerçevesi için derleme zamanında

#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++ Tam örnek ((yapıcı)) ana önce işlevi çalıştırmak ve her bir test işlev kayıt olabilir özelliği kullanarak http://pastebin.com/C5mmcYDD

Saygılarımızla

+0

Linker harita dosyasından alın. –

+0

, bir üçüncü parti yazılım için – trax

+0

aradığım şey değil, "üçüncü taraf yazılımı" - linker - yürütülebilir bir program oluşturmak için gerekli olacaktır. Başka bir deyişle, bu amaç için kullanıp kullanmadığınızı, kullanmanız gerekecek. – Peter

cevap

0

olacaktır. Bu bir derleme zamanı değil, şu ana kadar ihtiyaçlarımızı karşılar.

#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)