2017-04-09 3 views
-1

私はパスカル(freepascal)で何かを定義しようとしています。あなたはパスカルでそれを行うことができますどのようにパスカルのパラメータを定義する

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

: は、C++のように、あなたは、変数は、このようなマクロを定義渡すことができますか?

私は{$MACRO ON}コマンドを最初の行に追加しました。その結果、通常の定義をエラーなしで実行することができます({$define lala:='hello world'})。

しかし、私が試したときに{define lala(i):=i}プログラムにエラーが発生しました。

パスカルで可変パラメータを渡すにはどうしたらいいですか?

+2

あなたはこれをしたくありません。 C++ではひどい考えです。悪い考えをコピーしないでください。 –

+0

プログラマーズガイドのセクション1.2.48から: "{$ MACRO ON}状態では、コンパイラはCスタイルの(ただし精巧ではありませんが) マクロの使用を許可します。 「精巧ではない」部分に注意してください。私はパラメータがサポートされているとは思わない。 – tonypdmtr

答えて

3

外部プリプロセッサを使用して、ビルドシステムで実行してから、結果に対してパスカルコンパイラを使用してください。

FPCマクロシステムは、メタプログラミングのためではなく、ヘッダー内のコンベンションマクロとコンパクトなイネーブル/ディセーブルロジックのみ(ホームブレンドアサートとその他のデバッグログコードなど)を呼び出すためのものであり、パラメータ化をサポートしていません。

非衛生的なマクロは、基本的にパスカル単位システムと互換性がなく、衛生的なマクロはインライン関数/プロシージャによってカバーされます。

+0

答えをありがとう。私はちょうどC++ haha​​haのようないくつかのテンプレートをパスカルでコーディングしたいと思っています。さて、私は関数とプロシージャを使用します。 –

+0

FPCにはジェネリックがあります。 –

関連する問題