2017-04-09 3 views
-1

J'essaie de définir quelque chose dans pascal (freepascal). Comme dans C++ vous pouvez passer définir la variable macro comme ceci:Passer le paramètre dans pascal définir

#define REP(i,k) for(int i=0; i<k; i++) 

Comment pouvez-vous faire en pascals?

J'ai ajouté la commande {$MACRO ON} sur la première ligne, et par conséquent, il peut fonctionner normalement définir sans erreur comme {$define lala:='hello world'}.

Mais quand j'essaye {define lala(i):=i} le programme a eu une erreur.

Comment puis-je passer paramètre variable en Pascal définir?

+2

Vous ne voulez pas faire cela. C'est une idée terrible en C++. Ne copiez pas de mauvaises idées. –

+0

A partir de la section 1.2.48 du Guide du programmeur: "Dans l'état {$ MACRO ON}, le compilateur permet d'utiliser des macros de type C (mais pas aussi élaborées)." Notez la partie "pas aussi élaborée". Je ne pense pas que les paramètres soient supportés. – tonypdmtr

Répondre

3

Utilisez un préprocesseur externe et exécutez-le dans le système de construction avant d'utiliser le compilateur Pascal sur le résultat. Le macro-système FPC n'est pas conçu pour la méta-programmation, mais pour appeler des macros conventionnelles dans des en-têtes et activer/désactiver une logique compacte uniquement (comme home-brewn assert et autre code de journalisation) et ne supporte pas le paramétrage.

Les macros non hygiéniques sont fondamentalement incompatibles avec le système Pascal, et les macros hygiéniques sont couvertes par des fonctions/procédures en ligne.

+0

Merci pour la réponse. Je veux juste coder un template dans Pascal comme C++ hahaha. Eh bien, je vais juste utiliser la fonction et la procédure alors. –

+0

FPC a des génériques. –