Şu anda, belirli dizeleri bu dizelerin karmalarını değiştirmemi gerektiren bir kod projesi üzerinde çalışıyorum. Bu dizeler çalışma zamanında değişmeyeceği için, ön işlemcinin, derleme zamanında karma olduğunu beyan ettiğim her dizimde karma işlevimi çalıştırması avantajlı olacaktır.Derleme sırasında C önişlemcisi kod yürütme nasıl yapılır?
C önişlemcisini derleme zamanında karma işlevimi çalıştırmak için herhangi bir yolu var mı?
Bunun yukarıda açıkladığım şekilde çalışmadığını biliyorum, ancak nereye gideceğim hakkında bir fikir edinmek için, bir makro kullanan bazı sözde kodlar. yerine basitçe makro genişletme, önişlemci karma işlevi koştu ve o hash fonksiyonu dönüş değerine genişletilmiş düşünün: Yine
#include <iostream>
#include <string>
#define U64_HASH(inputString) getU64HashCode(inputString)
//my hash function
unsigned long long getU64HashCode (string inputString)
{
/*code*/
}
int main()
{
cout << U64_HASH("thanks for helping me") << endl;
return 0;
}
, ideal olarak cout << U64_HASH("thanks for helping me") << endl;
yazdım cout << 12223622566970860302 << endl;
kadar genişleyip Bir başlık dosyası üreticisi ve bu proje için iyi çalışıyor.
Nihai Çözüm
Ben sadece müthiş olduğu gibi bu proje için John Purdy's perl script kullanmaya karar ve bana derleyiciye doğrudan istediğiniz çıktıyı beslemek için izin verir var. Çok sağol John.
Değil çılgın büyü olmadan. –
C++ 11, kullanıcı tanımlı hazır bilgi ve dizinlere sahiptir. Bunlar yardımcı olabilir. – Pubby
her zaman bu dizeleri karma olarak tanımlayabilirdiniz? AFAIK C ön işlemcinin kod çalıştırma yeteneği yoktur. – Serdalis