Kendi içsel işlevlerinizi yazamazsınız. Çünkü bu derleyici büyüsü gerektirir.
Bununla birlikte, hedefinize ulaşmak için başka seçenekler de olabilir.
Preprocessor
tek yolu önişlemci kullanmaktır.
birkaç vardır: http://wiki.delphi-jedi.org/wiki/JEDI_Pre_Processor
http://sourceforge.net/p/dpp32/wiki/Home/history
Andreas Hausladen bu konuda kendi çalışmalarını sadece açık bir kaynaktan elde ettiği Delphi önişlemci.
Gerçekten bir ön işlemcisi değil, bir dil genişleticisi.
https://github.com/ahausladen/DLangExtensions
önişlemciler sorun, orijinal (önce ön-işleme) kaynak kodu ve Delphi derler kaynak kodu arasında bağlantı öldürür olmasıdır.
Bu, orijinal kaynağınız için hata ayıklama bilginizin olmayacağı anlamına gelir.
(harita dosyasını yeniden yazmazsanız).
Eğer özgü bir fonksiyon olarak hemen hemen aynı verim elde etmek inlining kullanabilirsiniz yapmak istediğinize bağlı
satır içine almak. Bkz: https://stackoverflow.com/a/6401833/650492
Eğer instrinsic fonksiyonları oluşan bir kod bloğu varsa
, tam sonuç derleme zamanında değerlendirilecektir iç işlevlerini kullanarak ifadeleri Construct, toplam yapı çalışmalarını yaparak bu içsel sanki işlevi.
Not aşağıdaki gibidir (saçma) Örnek: satır içi ve sadece iç işlevlerini (ve derleyici yönergeleri) kullandığı için
function FitsInRegister<T>: Boolean; inline;
begin
if GetTypeKind(T) in [tkString, tkUString] then result:= false
else
{$IFDEF CPU32BITS}
Result:= SizeOf(T) <= 4;
{$ELSEIF CPU64BITS}
Result:= SizeOf(T) <= 8;
{$ENDIF}
end;
, fonksiyon bir sabite compiletime karara olup olacak herhangi bir kod üretmek .
Hayır. Önişlemciye ihtiyacınız olacaktır. – TLama
belki de soru bir özel preprocessor –
@Jasper yazmak nasıl olmalıdır Soru oldukça açıktır. Harici dahili sistemler destekleniyor mu? –