問題タブ [m4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - DDL (postgres 固有) スクリプトの条件付き生成
私のアプリケーションは「汎用」の RDBMS スキーマ カテゴリに当てはまりません。巨大な DDL スクリプトは必要ありません。#include
したがって、セマンティクスが必要であり、おそらくスクリプトのさまざまなバリアントが必要になるため、#ifdef
セマンティクスが必要になります。
GNU m4は行くべき道ですか?
それとも、マクロ機能がいくつかありますpsql
か?
編集:m4でしばらく作業した後、それは法案に合っているようです。私は以下の質問に答えました(しばらく受け入れません)が、この質問にさらに追加できると思われる場合はそうしてください.
autotools - AC_CONFIG_SRCDIR 内のスペースを含むパスをエスケープするにはどうすればよいですか
スペースを含む AC_CONFIG_SRCDIR にいくつかのパスを含める必要があります。どうすればそれらを逃れることができますか? たとえば、「some file.in」がある場合、次のように宣言する必要があります。
AC_CONFIG_SRCDIR[何らかのファイル]
newline - GNUM4で改行を一致させる方法_適切に_
改行を置き換えるマクロを作成しようとしています。
私の最初の試みは:
これにより、中間マクロを使用しない場合は正解になり、それ以外の場合は最後の改行のみに一致します。以下の結果を参照してください。
次に、同様の質問を見つけまし た。m4のpatsubstで、改行をスペースに置き換えるにはどうすればよいですか。
だから、私はちょうど作った:
それは与えます:
最後の選択肢も同じ問題を抱えています。助言がありますか?
java - Scala、Maven、およびプリプロセッサ
私は、Javaのプリプロセッサとマクロに対する哲学的な議論をすべて知っています。一部の人が言語機能を悪用する可能性があるという理由だけで、それをすべての人から除外する必要があることに同意しません。
効率的なロギングのために、JavaとScalaのコードにマクロ__FILE__
を含めたいと思います。__LINE__
実行時のパフォーマンスに影響するため、例外の使用は受け入れられません。「本番コード」でロギングをオフにできると主張する人々は、BrianKernighanのアドバイスに注意する必要があります。
「プログラムが機能している」というエラーメッセージを削除することは、地面にパラシュートを着るようなものですが、空中に出たらパラシュートを外します。
これらのマクロが言語に組み込まれる可能性はありますか?そうでない場合、Mavenを使用してm4のようなプリプロセッサを実行する方法はありますか?
ありがとう。
preprocessor - 汎用プリプロセッサ: どのような種類のファイルにも使用するには?
誰かがテキスト ファイルを操作するために一般的なプリプロセッサを使用しているかどうか疑問に思っていました。
Javaにはプリプロセッサがないため、アイデアが思い浮かびましたが、条件付きコードのコンパイルなどが必要です。
ここで、その考えをさらに進めて、頻繁に編集する必要があるあらゆる種類のファイルに汎用プリプロセッサを使用することもできますが、すべての編集は同様の方法で行われます。
さて、私がCプリプロセッサを使用しているので使いたい古き良きm4があり、 GPPがありますが、2007年に開発が中止されました.
可能であれば、C プリプロセッサと同じ方法でディレクティブを使用する必要があります#define SOMETHING
。
m4 はシジルなどを使用しないため、他のコードと衝突する可能性があります。m4 を使用する場合は、すべてのディレクティブの前にシジルまたは別のプレフィックスなどを付ける方法についてアドバイスが必要です。
preprocessor - m4は拡張に従わないのですか?
ここでは、テキストの前処理にm4を使用していますが、理解できない動作をします。
これは問題の部分です:
このマクロは、定義されているかどうか(m4 -DTEST)に関係なく、常にに展開されます。.o
TEST
私は何が間違っているのですか?
shell - m4-シェルコマンドの実行
私はm4を初めて使用し、ユーザーが構成時にライブラリの場所を指定できるようにするマクロを設定しようとしています./configure --with-mylib=/path/to/lib.so
。
を使用したm4マクロAC_ARG_WITH
では、指定されたファイルが実際に存在することを確認してから、そのlibへのパスを保存します。MYLIB_PATH=esyscmd([dirname $withval])
。これにより、エラーが発生します。
シェルはについて知らないようです$withval
。このコマンドを実行するにはどうすればよいですか?
ありがとう、
アンドリュー
gnu - M4バイナリ出力
バイナリ整数を出力する M4 マクロを定義することは可能ですか? 例えば:
値が 42 の 1 バイトを出力する必要があります。
c++ - autoconf以外にm4の注目すべき使用法はありますか?
autoconf以外の(できればacまたはc ++環境での)使用法を知っている人はいますか?m4
それは、そうでなければ(たとえば「標準」プリプロセッサで)解決するのが困難だった問題を解決するのに役立ちました。 。
スクリプトやプリプロセッサなどを使用して冗長性を削減または最小化するC++でプロジェクトを実行する方法を考えているので、これを尋ねます。
m4 - m4では、名前に環境変数を含むファイルをどのように含めますか?
-I
スイッチを使用せずに、サンドボックスベースディレクトリに関連するファイルをm4テキスト内に含めたい。
これまで、sys呼び出しを使用して環境変数を取得する方法を理解しました。
次に、その環境変数に基づいたファイルを含めたいと思います。
合計で、私は持っています:
どの印刷物:
includeの通常の構文は次のとおりです。
しかし、引用するMODEL_ROOT/sw/lib/m4_macros/foreach2.m4
と、m4は次のようになります。
m4は文句を言う:
パスに環境変数を含むファイルを含めるにはどうすればよいですか?