2009-12-12 13 views
2

Existe-t-il un préprocesseur de macros pour Delphi 7?Prise en charge du préprocesseur de macros Delphi 7

Il n'y en a pas intégré, donc peut-être il y a une possibilité d'utiliser un préprocesseur tiers ou d'autres langages (comme le préprocesseur c).

S'il y en a un, comment le configurer pour Delphi 7? J'essaye de faire la fonction inlining (pour la vitesse). Macro préprocesseur semble être la seule option facile pour Delphi.

Merci, Egon

Répondre

4

Vous pouvez toujours exécuter un macro-processeur externe, tel que m4 ou pair (shudder) cpp sur votre code avant de le compiler. Je ne recommanderais pas ceci cependant - dans mon expérience les avantages de l'inlining (qui est ce que vous semblez vouloir faire) sont assez petits, et peuvent être compensés par des ralentissements ont provoqué des augmentations dans la taille de code.

+0

Cela vaut la peine, mais uniquement pour les méthodes à feuilles courtes qui utilisent des types de niveau relativement bas. (IOW non automatisé). C'est génial pour les itérateurs à pointeur et autres. Dès qu'une procédure est appelée, l'accélération est terminée –

+0

J'ai utilisé finalement m4. Il semblait avoir la syntaxe la plus séparée. La vitesse peut être 10x pour les petites fonctions. Par exemple une fonction simple comme PointInRect. – Egon

0

Je n'ai pas entendu parler de macros tiers dans Delphi 7, mais les versions 2007+ ont inline automatique si c'est une option.

+0

D2005 prend déjà en charge l'intégration –

1

Vous pouvez utiliser le [Preprocesseur Pascal JEDI] (préprocesseur JEDI Pascal) qui fait partie du JEDI Code Library.

Vous pouvez récupérer la version actuelle du JCL à partir de son SourceForge project page, et vous pouvez parcourir le code de cours JPP here.

2

Voilà comment je m4:

// uses lookup for counting bits 
function PopCount(const Number: Cardinal): Byte; 
begin 
    Result := WordBitCount[Number and $FFFF] + WordBitCount[Number shr 16]; 
end; 
{ M4 macro 
define(PopCount, (WordBitCount[[email protected] and $FFFF] + WordBitCount[[email protected] shr 16])) 
} 

Il est encore facilement compilable, mais peut être accéléré avec m4.

+0

J'aime que votre solution puisse être compilée sans d'abord lancer le pré-processeur :) – Sebastian