2016-04-10 16 views
0

Bir birim test etme sürücüsü yapmak istiyorum. Aranan böyle bir deklarasyon vardırBir işlev çağrısının yumuşak kodlanmasına izin verebilir miyim?

I32 cdecl32 func(in I32, in szC8P32, out I32P32, out sC8P32) 
in in  out out  ret out out ret ... 
16 test 5 test2 1 

:
Bu gibi içerikle tests.txt okur

int __cdecl func(const int, const char*, int*, char*); 

testi sürücü kullanım LoadLibrary ve GetProcAddress fonksiyonun adresini almak için.
Ancak, sürücü, func bildirimini İÇERMEZ. Diğer işlev türlerini test etmek için kullanılacaktır. Evrensel bir araç gibi.
Bağımsız değişkenler tests.txt ayrıştırılarak dinamik olarak verilmelidir.

Mümkün mü? Nasıl yapmalıyım?

+0

Bu tür bir düzenek daha kolay bir kod olduğunu söyleyebilirim, çünkü doğru argümanları yalnızca yığına ve 'hafıza' çağrısına itmelisiniz. Böyle bir şeyi güçlü bir şekilde yazılan-statik olarak derlenmiş bir dilde uygulamaya çalışmak bir karışıklıktır. –

+0

@DavidHaim: C, ** kuvvetle yazılmış değil! – Olaf

+0

@Olaf güçlü bir şekilde yazılmıştır ancak zayıf bir şekilde kontrol edilmiştir –

cevap

0

Yapmaya çalıştığınız şey zor. İşlevin bildirimini TXT dosyasındaki tanımla eşleştirmeniz gerekir. Tam olarak eşleşmezlerse, tanımlanmamış davranışlarınız olacaktır.

  1. test sürücüsü işlevi prototip ile bir C dosyası yayacaktır ve gerekli kodu oluşturmak için C derleyicisi çalıştırın:

    Neyse, iki seçeneğiniz vardır.

  2. libffi'u, tam olarak ihtiyacınız olanı yapmak için tasarlanmış bir kitaplık kullanın.
+0

Ah ... aydınlanmış beni. Noob sorusu için üzgünüm ... – wiki908

İlgili konular