英語フランス語スペイン語

Ad


OnWorksファビコン

icmake - クラウドでオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターを介して、OnWorks の無料ホスティング プロバイダーで icmake を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド icmake です。

プログラム:

NAME


icmake - プログラムのメンテナンス (make) を使用するユーティリティ C-のような文法

SYNOPSIS


アイメイク [オプション] ソース[.im] [宛先[.bim]] [-- [引数]]

イクムン ビンファイル

DESCRIPTION


イクマケ(1) の代わりに使用できます。 make(1)。 標準動作モードでは、
次のプログラムを呼び出します。

o icm-pp icmake ファイルを前処理するには

o icm-comp バイトコードをコンパイルするには アイメイク s

o icm-exec バイトコードファイルを実行するには

イクマケ プログラマーがプログラミング言語 (よく知られている言語によく似ている) を使用できるようにします。
C-プログラミング言語) (複雑な) プログラムに関係するアクションを定義します。
メンテナンス。 このため、 アイメイク さまざまな特別な演算子と一連のサポートを提供します
プログラムのメンテナンスに役立つことが証明されている関数。

プログラム イクムン(1) は、コンパイルされたバイトコード (.bim) ファイルを逆アセンブルするために使用できます。 イクムン
主に説明、教育、デバッグに使用されます。

従来の make ユーティリティは、ヘッダー ファイルが変更されるとソースを再コンパイルします。 の中に
のコンテキスト C + + プログラム開発では、新しいメンバーをプログラムに追加するため、これは悪い考えであることがよくあります。
class では通常、クラスのソースを再コンパイルする必要はありません。 クラスを処理するには
依存関係 アイムブルド(1) 検査する場合があります クラス 依存関係の定義に使用できるファイル
クラスの間で。 デフォルトでは、クラスの依存関係は解釈されません。 を参照してください。 icmconf(7)
詳細については、man ページを参照してください。

OPTIONS


イクマケ 次のファイルとオプションを使用します。

o source: アイメイク スクリプト ソース ファイル (デフォルトの拡張子: .im).

o dest: バイナリ アイメイク スクリプト ファイル (デフォルト: `ソース'.bim、「.bim ファイル」と呼ばれます
下)。

o --: アイメイク 引数セパレータ 区切る アイメイク 渡された引数からの引数
.bim filenl() へ 引数: 続く引数 -- .bim ファイルに渡されます
現状のままで、以下から入手できます。 リスト 引数 として定義されたパラメータ アイメイク
スクリプトの メイン 関数の XNUMX 番目のパラメータ (以下のセクションを参照) USER 定義済み
関数)。 一部のオプション (以下を参照) については、 -- 区切り文字は必要ありません。

イクマケ 次に説明するさまざまなオプションをサポートしています。 の -h オプションは他のすべてを無効にします
オプション、 -a オプションは、以下を除く他のすべてのオプションを無効にします -h。 残りのアクションのうち、
オプション(-NS、 -NS、 -e、 -私、 -p & -t) XNUMX つだけ指定できます:

o -a
~に関する情報を表示する アイメイク、によって却下されました -h;

o -b
廃止されました: 代わりにオプション -e を使用してください。

o -c
  アイメイク ソース ファイルがコンパイルされ、.bim ファイルが生成されます。

o -e
を実行します アイメイク .bim ファイル、次のように指定されます アイメイクの最初のファイル引数。 追加の
引数はそのまま .bim ファイルに渡され、 -- 指定すべきではありません。

o -F
ファイル名とフラグ、および実行されるすべてのアクションの概要
アイメイク 標準出力ストリームに表示されます。

o -h
使用情報を提供して終了 アイメイク;

o -i
最初の引数は アイメイク ソース ファイル、デフォルトのバイナリ ファイルは
必要に応じて構築されます。 追加の引数は .bim ファイルに渡されます。
そのまま、そして -- 指定すべきではありません。

o -p
  アイメイク ソースファイルは前処理のみされ、前処理されたファイルが書き込まれます。
〜へ アイメイクの XNUMX 番目のファイル引数 (デフォルトでは `ソース'.pim);

o -q
無視されます、将来削除される予定です アイメイク バージョン;

o -t
続く議論 -t は、削除される一時 .bim ファイルの名前です。
After アイメイクさんの電話です。 いつ . 一時 .bim ファイルの名前として指定されます
次にデフォルトの一時ディレクトリ、その後に アイメイクのプロセス ID、その後に続く
.bim 使用されている。

一時 .bim ファイルの名前の後に、 アイメイク ソーススクリプト
を指定する必要があります。 追加の引数はすべて .bim ファイルにそのまま渡されます。
-- 指定すべきではありません。 ソーススクリプトファイルの実行可能フラグを設定した後
(chmod +x スクリプト)、次のような最初の行を指定します。

#!/usr/bin/icmake -t.

  アイメイク スクリプトは直接呼び出すことができます。

スクリプト arg1 arg2

その場合、 アイメイク スクリプト 「スクリプト」 を受信中に実行されます。
引数 スクリプト arg1 arg2.

o -T
このオプションには、保存に使用されるディレクトリの名前を指定する必要があります。
一時ファイル。 たとえば、コンパイルするとき、 アイメイク スクリプト、の出力 アイメイクさん
プリプロセッサは一時ファイルであり、終了時に削除されます。 デフォルトでは / tmpに 使用されている、
ない限り、 / tmpに は書き込み可能なディレクトリではありません。この場合、現在のユーザーの $ HOME
ディレクトリが使用されます。 暗黙的な一時ファイル名は常にプロセス ID で始まります。
現在 アイメイク プロセス。

o -v
ディスプレイ アイメイクのバージョン番号と末尾 アイメイク、によって却下されました -h

イクムン:

ビンファイル: バイナリ アイメイク スクリプトファイル。

プリプロセッサ 指令


次のプリプロセッサ ディレクティブが使用可能です。

コメント:
標準 C コメント(その間のすべて) /* & */) およびコメントから行末まで (すべて
次の行の内容 //)は無視されます。

o シェルの起動: アイメイク-script は次で始まる場合があります #!道ここで、
path の絶対位置を定義します。 アイメイク プログラム。 脚本を作ることで
実行可能ファイルの場合、明示的に呼び出さなくても呼び出すことができます アイメイク.

たとえば、(実行可能) icmakefile の最初の行が 'icm' (拡張子なし) の場合、
含まれています

#!/usr/bin/icmake -i

その後 icm コマンドとして発行することができるため、

/usr/bin/icmake -i icm ...

また、

#!/usr/bin/icmake -t /tmp/icm

が使用される可能性があり、その結果、

#!/usr/bin/icmake -t /tmp/icm icm ...

この場合、バイナリ ファイルは終了時に削除されます。

o #include "ファイル名"
ファイル ファイル名 ディレクティブの場所に含まれています

o #include
ファイル ファイル名 の場所に含まれています #include 指令; ファイル名
で指定されたコロンで区切られたディレクトリ内で検索されます。 IM 環境
変数。 最初の発生 ファイル名 で指定されたディレクトリ内 IM
環境変数が使用されます。

o #定義する 識別子 [意味]
テキスト 識別子 に置き換えられます 定義。 定義には以下が含まれる場合があります
すでに定義されている識別子への参照。 ${識別子} フォーマット。 もし
${識別子} (まだ) 定義されていない、テキスト ${識別子} 文字通り保管されています。
無限再帰を最大 100 で防ぐには ${識別子} 交換は許可されています。

行の最後の文字が の場合、定義は次の行に続きます。
バックスラッシュ (\)。 (定義には含まれていません)。 プリプロセッサ
二重引用符で囲まれた文字列を連結します。二重引用符で囲まれた文字列は複数にまたがることはできません。
線。 定義内の複数の空白 (二重引用符で囲まれた文字列の外側) は、
単一の空白スペースに縮小されます。

に続く定義は、 #定義の 識別子はオプションです。 省略した場合、
マクロが定義されているので、 #if(n)def ディレクティブ (以下を参照) ですが、
内のテキストには置き換えられません アイメイク コードステートメント。

o #ifdef 識別子
Status 識別子 マクロはコードの次のブロックで定義されました (一致するまで) #その他
or #endif ディレクティブが読み取られました) はバイトコンパイルされます。 それ以外の場合、コードのブロックは次のようになります。
無視されます。

o #ifndef 識別子
Status 識別子 マクロは コードの次のブロックを定義しました (一致するまで)
#その他 or #endif ディレクティブが検出されました) はバイトコンパイルされます。 それ以外の場合は、ブロック
コードは無視されます。

o #その他
を終了します #ifdef & #ifndef 指令、受諾決定を取り消す
次のコード。 唯一 #その他 ディレクティブを関連付けることができます #if(n)def
ディレクティブ

o #endif
一致する部分から始まるプリプロセッサ ブロックを終了します。 #ifdef, #ifndef or #その他
指令。 の #endif ディレクトリとその一致 #if(n)def ディレクティブは次のようにする必要があります
同じファイル内で指定されます。

o #undef 識別子
削除します 識別子 定義されたシンボルのセットから。 これは影響を受けません
以前に定義されたシンボルの指定。 識別子の 定義
使用されてきました。 もしも 識別子 定義されていない場合は警告が発行されます。

DATA TYPES


イクマケ 次のデータ型をサポートします。

o ASCII 文字 定数
ASCII 文字定数は、XNUMX 文字または XNUMX 文字で囲まれた XNUMX つの文字で構成されます。
引用。 単一の文字 (例: 「あ」) はキャラクターそのものを表します。 標準
エスケープシーケンス (例: '\n') がサポートされており、変換された標準を表します。
値 (例: '\n' ASCII 値 10 (XNUMX 進数) を表します)。 規格外の脱出
シーケンス (例: '\バツ') エスケープ文字に続く ASCII 文字を表します
(そう '\バツ' 等しい 'バツ')。 XNUMX つの XNUMX 進数で構成されるエスケープ シーケンスは、次のことを表します。
256 を法とする XNUMX 進数値に対応する ASCII 文字 (例: '\123').
x の後に XNUMX つの XNUMX 進数が続くエスケープ シーケンスは、次のことを表します。
XNUMX 進値に対応する ASCII 文字 (例: '\xa4').

o int型
以下の範囲の整数値 -0x8000   0x7fff. int型 定数は次のとおりです
1 進数 (9 ~ XNUMX の数字で始まる)、XNUMX 進数として指定します。
(0 で始まり、XNUMX つ以上の XNUMX 進数が続きます) XNUMX 進数
(0x で始まり、XNUMX つ以上の XNUMX 進数字が続きます) または ASCII
文字定数。

o 文字列
テキスト変数。 文字列定数は二重引用符で区切られます。 複数の文字列
定数は連結できますが、単一の文字列定数が複数にまたがることはできません。
線。 空白のみで区切られた文字列定数 (つまり、空白、改行、
コメント) は連結され、XNUMX つの単一の文字列定数を表します。 を示すには、
文字列定数の行末には、 \n エスケープシーケンス。

二重引用符で囲まれた ASCII 文字定数も、
オペランドの XNUMX つが次の場合の算術式 int型。 単一の文字
文字列定数 しなければなりません 定数にすることはできません 文字列 変数に保存します.

同様に、一重引用符で囲まれた ASCII 文字定数は、
文字列オペランドが予期される状況。

o リスト
個別にアクセス可能な一連のデータを含むデータ構造 文字列 値。 いつ
リストには要素が含まれており、その最初の要素はインデックス 0 で示されます。

o ボイド
関数定義とともに使用され、関数が値を返さないことを示します。
の値です。

変数はグローバル レベルでも、内部のローカル レベルでも定義できます。
機能。 関数内で定義される場合、標準 C スコープと可視性のルール
申し込み。 たとえば、ローカル変数は、それ自体またはより深くネストされた変数でのみ使用できます。
ブロックの可視性は、同じように定義することにより、より深くネストされたブロックでマスクされます。
より深くネストされたブロック内の名前付き変数。 変数は厳密に型指定されており、
型を持つことはできません ボイド.

変数は定義時に初期化される場合があります。 初期化は式です。
事前定義またはユーザー定義の関数、定数値、および変数の値を使用できます。
定義の時点で表示されます。

事前定義済み 定数


次の定数は、によって事前に定義されています。 アイメイク。 すべて一定です int型 値:

──────────────────────────────────────────
対象となるシンボル値
──────────────────────────────────────────
O_ALL 8 メイクリスト
O_DIR 2 メイクリスト
O_FILE 1 メイクリスト
O_SUBDIR 4 メイクリスト
──────────────────────────────────────────
オフ 0 エコー
オン 1 エコー
──────────────────────────────────────────
P_CHECK 0 システムコール
P_NOCHECK 1 システムコール
──────────────────────────────────────────
S_IEXEC 32 統計
S_IFCHR 1 統計
S_IFDIR 2 統計
S_IFREG 4 統計
S_IREAD 8 統計
S_IWRITE 16 統計
──────────────────────────────────────────

次の定数はアーキテクチャに依存します。

───────────────── ────────
プラットフォームで定義されている場合はシンボル 1、それ以外の場合は 0
───────────────── ────────
unix Unix、通常は GNU の gcc コンパイラを使用
UNIX も利用できる場合があります
Linux を実行している Linux x86 (通常は gcc を使用)
LINUX も利用できる場合があります
M_SYSV、SCO/Unix を実行する M_UNIX x86
_POSIX _SOURCE Posix 準拠のコンパイラを備えた Unix
__hpux HP-UX (ネイティブ HP コンパイラーを使用)
───────────────── ────────

オペレーター


int型 オペランド:

すべて C 演算子を使用できます (ポインター演算子を除く)。 アイメイク サポートしていません。
ポインタ)。 彼らは彼らのように活動します C-プログラミング言語の対応者。

文字列型 オペランド:

文字列 型変数および/または定数では、次の演算子を使用できます (a & b
表す 文字列 変数または定数):

o a + b: 新しいものを返します 文字列 の連結を含む値 文字列a
& b。 ご了承ください 文字列 定数は ( +
演算子)、たとえば、次の XNUMX 行は両方とも文字列を定義します。 "こんにちは 世界":

"こんにちは世界"
「こんにちは」+「世界」

o a += b: a する必要があります 文字列 変数に、 文字列 変数または値 b is
添付。

o 文字列比較: 演算子 == != <= >= < > != & == に適用される可能性があります 文字列
値または変数。比較が成功した場合は 1 を返し、それ以外の場合は 0 を返します。
比較では大文字と小文字が区別され、定義された順序または文字に従います。
セクションに ASCII キャラクターセット。

o !a: ブール値 ! (not) 演算子は、次の場合に 1 を返します。 文字列 a は空、それ以外の場合は 0
戻ってきた。

o a 若い b, a より新しい b: ファイルの場合は 1 を返します a ファイルよりも新しいです b。 例えば、
「ソース.cc」 より新しい 「ソース.o」。 ファイル a & b 存在する必要はありません: 両方が存在しない場合
存在する場合は 0 が返されます。 もしも b 存在しない場合は 1 が返されます。 もしも a 存在しません 0 はあります
戻ってきた; 同じくらい古い場合は 0 が返されます。 ( 存在する() 事前定義された機能
(以下のセクションを参照 事前定義済み 関数) を使用すると、
ファイルが存在しています)。

o a 古い b: ファイルの場合は 1 になります。 a ファイルよりも古いです b。 例えば、 「libprog.a」 古い
「ソース.o」。 ファイル a & b 存在する必要はありません: 両方が存在しない場合は 0 になります。
戻ってきた; もしも a 存在しない場合は 1 が返されます。 もしも b 存在しない場合は 0 が返されます。 もしも
それらは同じくらい古いので、0 が返されます。

o []: インデックス演算子は文字列変数または定数から文字を取得します。
文字列を次のように返します 右辺値。 したがって、次のステートメントはコンパイルに成功します。

// str1 と str2 が文字列であると仮定します
str1 = str2[3];

ただし、次のステートメントはコンパイルされません。

str2[3] = "a";

無効なインデックス値が指定された場合は、空の文字列が返されます。

o `バックティック` 演算子 (`文字列 cmd`)
XNUMX つのバックティックの間に配置された文字列は、 ポペン(3) 機能。 の
文字列引数に格納されたコマンドによって生成される標準出力は次のとおりです。
リストとして返されます。 空のリストは、コマンドを実行できなかったことを示します。
実行できても出力が生成されなかったコマンドはリストを返します。
空の要素が XNUMX つ含まれています。 コマンドの標準エラー ストリーム出力は、
バックティック演算子によって収集されます。 ただし、標準のシェルのリダイレクトは次のようになります。
標準エラー ストリームの出力を収集するために使用されます。 例:

printf(`"ls"`); // の要素を出力します
// 現在のディレクトリ

事前定義された関数 eval(文字列 cmd) バッククォートとまったく同じように動作します
演算子: これらは同義語です。

リスト型 オペランド:

リスト 変数や値の型には、次の演算子が使用できます。

o a + b: 新しいものを返します リスト の連結を含む値 リストa &
b。 これは 集合演算: 要素が両方に出現する場合 a または b、彼らは
結果のリストに XNUMX 回表示されます (セット加算は組み込みによって提供されます)
function リストユニオン).

o a - b: 新しいものを返します リスト 要素を含む値 a 存在しないもの
in b。 この is 差分集合演算: 返されたリストにはすべての要素が含まれます
in a の要素ではないもの b.

o a += b: の要素 b の要素に追加されます a、これは リスト
変数。 これは セット操作。

o a -= b: の要素 b の要素から削除されます a、これは リスト
変数。 これ is 集合演算: のすべての要素 a にあります b  
から削除 a.

o リストの等価比較: 演算子 != & == に適用される可能性があります リスト 値または
変数。 オペレーター == 両方のリストの要素ごとに同一の場合は 1 を返します。
それ以外の場合は 0 が返されます。 オペレーター != ~の結果を逆転させる ==.

o !a: ブール値 ! 演算子は、次の場合に 1 を返します。 リスト a は空、それ以外の場合は 0
戻ってきた。

o []: インデックス演算子は、リスト変数からリスト要素を取得します。それは、
文字列として 右辺値。 したがって、次のステートメントはコンパイルに成功します。

// lst がリスト、str が文字列であると仮定します
str = lst[3];

ただし、次のステートメントはコンパイルされません。

lst[3] = str;

無効なインデックス値が指定された場合は、空の文字列が返されます。

キャスト:

型キャストは標準を使用して実行できます。 C キャストするキャスト演算子:

o 文字列から int へ、またはその逆 ((int)"123", (文字列)55)

o 文字列をリストに変換 (リスト LST = (リスト)「こんにちは」)

FLOW CONTROL


イクマケ 次のサブセットを提供します Cさんの発言。 それらは次のように使用できます。 C
プログラミング言語。

o 表現 ;
単純な式ステートメント。

o 複合文
任意のタイプの変数は、任意のコンパウンド内のどこでも定義および初期化できます。
ステートメント。 は 視認性 変数の定義はその定義時点から始まります。

o if (状態) ステートメント
条件内で変数を定義および初期化できます。 例えば、

if (文字列 str = getText())
プロセス(文字列);

この例では、 プロセス の場合は呼び出されません getText() 空の文字列を返します。 の
変数 STR の前後どちらにも存在しません if 声明。

o if (状態) ステートメント ほかに ステートメント
前のステートメントと同様に、条件内で変数を定義できます。
初期化されました。

o for (初期化; 状態; インクリメント) ステートメント
(単一タイプの) 変数は、
INIT セクション。 NS INIT, 条件 & 増加 セクションは空のままになる場合があります。 の
空の条件セクションは「常に」として解釈されます true'。

o while (状態) ステートメント
条件内で変数を定義および初期化できます。
補完的な do ... その間() ステートメントは利用できません。 を定義することに注意してください。
変数、初期化式を使用すると、初期化が行われることを意味します
表現は、の反復ごとに実行されます。 while 声明。 したがって、次の
ステートメントは決して終了せず、終わりのない値 10 のストリームを表示します。

while (int x = 10)
printf(x--, "\n");

o 戻り値;, return 表現;
シンプルスタイル return ステートメントは以下で使用できます ボイド 機能、および return 表現
ステートメントは他のタイプの関数で使用されます。 関数 メイン 戻り値の型がある
ボイド それで メイン 単純なだけ return ステートメントを使用できます。 デフォルトでは、 アイメイク
スクリプトの終了値は 0 です。組み込み関数を使用します。 終了する (下記を参照) を指定します
他の終了値。

Be アドバイス: 値を返さない非 void 関数の動作は未定義です。

o 破る
for & while ステートメントの条件を無効にするステートメント。

o 続ける
次の反復に進みます。 for or while 声明。

o 終了(式)
の実行を終了します アイメイク-脚本。 の 表現 に評価する必要があります int型
値。これがスクリプトの終了値になります。

事前定義済み 関数


イクマケ は、以下の定義済み関数を提供します。これらは、どこでも使用できます。 アイメイク
スクリプト。 次の概要は、関数名のアルファベット順に並べられています。

o ボイド arghead(文字列 h)
のヘルパー関数 exec() (以下も参照してください) exec()): 「引数の先頭」を定義します。
使用する exec()。 デフォルトでは、「引数の先頭」は空の文字列です。

o ボイド アグテイル (ストリング t)
のヘルパー関数 exec() (以下も参照してください) exec()): 「引数の末尾」を定義します。
使用する exec()。 デフォルトでは、「引数の末尾」は空の文字列です。

o int型 ascii(文字列 s)
の最初の文字を返します s intとして; 例えば、 アスキー("A") 65 を返します。

o 文字列 ascii(int i)
返品 i 文字列として、たとえば、 アスキー(65) 文字列を返します "A";

o 文字列 変更ベース(文字列 ファイル、 文字列 ニューベース)
のベース名を変更します file、変更された名前を返します。 例えば、
Change_base("/path/demo.im", "外") 収益 「/パス/out.im」;

o 文字列 Change_ext(文字列 ファイル、 文字列 新しい)
の拡張子を変更します file、変更された名前を返します。 例えば、
rss_changeExt("source.cc", 「お」) 収益 「ソース.o」;

o 文字列 変更パス(文字列 ファイル、 文字列 新しいパス)
のパス指定を変更します file、変更された名前を返します。 例えば、
Change_path("tmp/バイナリ", "/ usr / bin") 収益 「/usr/bin/バイナリ」。 なお、
/必要に応じて -separator が挿入されます。

o 文字列 chdir(文字列 新しいディレクトリ)
スクリプトの作業ディレクトリを変更し、前のディレクトリを絶対ディレクトリとして返します。
パス。

  chdir(".") 現在の作業ディレクトリを取得するには、 chdir("") に使用される可能性があります
起動作業ディレクトリを取得します (この機能はリリースで壊れていました)
7.00 より前ですが、現在は動作しています)。 関数は、
アイメイク-script が指定されている場合 新しいディレクトリ 存在しません。

o 文字列 chdir(int チェック中、 文字列 新しいディレクトリ)
前の関数と同じ機能ですが、次のように指定します。 点検 as
P_NOCHECK。 この関数はスクリプトを終了しません。 むしろ、それは、
スクリプトの現在の作業ディレクトリ。

o cmdhead(文字列 h)
のヘルパー関数 exec() (以下も参照してください) exec()): 「コマンドヘッド」を定義します。
JOB exec()。 デフォルトでは、「コマンドヘッド」は空の文字列です。

o cmdtail(文字列 t)
のヘルパー関数 exec() (以下も参照してください) exec()): 「コマンドテール」を定義します。
JOB exec()。 デフォルトでは、「コマンド末尾」は空の文字列です。

o echo(int 選択してください)
呼び出されたプログラム (およびその引数) のエコーを制御します。 オフ 反響するなら
は要求されていません。 デフォルトでは エコー(ON) 使用されている。

o 文字列 要素(int インデックス、 リスト (または ストリング) 変数)
インデックス演算子と同じように動作します: インデックスを参照します ([]) 演算子
オペレーター.

o リスト eval(文字列 str)
この関数はバックティック演算子と同じように機能します。 提供されている例は、
したがって、バックティック演算子は次のように記述することもできます。

printf(eval("ls")); // 現在の要素を出力します。
// ディレクトリ

o exec(文字列 cmd、 ...)
引数を指定してコマンドを実行します。 各引数には接頭辞が付けられます。 引数ヘッド()さん
引数と接尾辞 argtail()の主張。 空白は挿入されないことに注意してください
の間に 引数ヘッド()の内容、適切な引数、および argtail()の主張。 全て
このように変更された引数は、今度は XNUMX つの空白で区切られて連結されます。
その後 cmdhead()の内容はコマンドと最初の引数の間に挿入されます
(いずれかの側を単一のブランクで区切る) および cmdtail()の内容を追記します
引数に追加します (ここでも単一の空白で区切られます)。 パス 検索して見つけます
CMD。 0が返されます。

o exec(int チェックコマンド、 文字列 cmd、 ...)
前の関数と同じ機能ですが、次のように指定します。 点検 as
未検査 この関数はスクリプトを終了しません。 むしろ、それは、
呼び出されたコマンドの終了ステータス、または 0x7f00 コマンドが見つからなかった場合。

o 実行(文字列 cmd、 文字列 cmdhd、 文字列 ああ、 ···、 文字列 引数、 文字列 cmdtl)
と同じ exec()ただし、コマンドの先頭/末尾と引数の先頭/末尾を指定する必要があります。

実際に実行されるコマンドは以下から始まります。 CMD、続いて cmdhd。 次はシリーズです
引数の後に続き、それぞれを で囲みます。 ああ & 引数。 コマンドは次で終了します
コマンド。 0が返される

o 実行(int チェック中、 文字列 cmd、 文字列 cmdhd、 文字列 ああ、 ···、 文字列 引数、
文字列 cmdtl)
前の関数と同じ機能ですが、次のように指定します。 点検 as
未検査 この関数はスクリプトを終了しません。 むしろ、それは、
呼び出されたコマンドの終了ステータス、または 0x7f00 コマンドが見つからなかった場合。

o int型 存在します(文字列 ファイル)
次の場合はゼロ以外の値を返します。 file 存在する場合、それ以外の場合は 0 が返されます。

o リスト fgets(文字列 ファイル、 リスト オフセット)
注意: in アイメイク バージョン 8.00.00 からこの関数のプロトタイプが変更されました
リスト fgets(文字列 ファイル、 int型 オフセット) 〜へ リスト fgets(文字列 ファイル、 リスト オフセット).

に含まれるオフセットで見つかった次の行 オフセット から読み取られます file。 渡す
空のリストへ fgets 読むには file 最初から。

読み取った行の内容を最初の要素として含むリストを返します。
(なし \n 行ターミネータ)、その XNUMX 番目の要素として行のターミネータ `\n'
(見つかった場合)、その XNUMX 番目の要素として文字列 OK ラインが成功した場合
読んだ、 フェイル ファイルからの読み取りが失敗した場合。 EOF で読み取る場合、空のリストは次のようになります。
戻ってきた。 返されたリストには、内部的に追加の要素が含まれる場合があります。
によって使用される fgets 次の行を読むとき。

複数行を読み取るには、まず空のリストを次のように渡します。 を取得します XNUMX 番目の引数。
後続の行を読み取るには、以前に返されたリストを次の行に渡します。 fgetsの 2番目の
引数。

以下は、完全なファイルを読み取る方法を示す例です。

リストレット;
しばらく(1)
{
ret = fgets("ファイル名", ret);
もし (!ret)
破る;
プロセス(ret[0], ret[1]);
}

o int型 fprintf(文字列 ファイル名、 ...)
すべての (カンマ区切りの) 引数をファイルに追加します ファイル名。 の数を返します
出力された引数。

o int型 fprintf(文字列 ファイル名、 文字列 フォーマット、 ...)
すべての (カンマ区切りの) 引数をファイルに追加します ファイル名。 の数を返します
出力された引数。

If 形式でアーカイブしたプロジェクトを保存します. プレースホルダ %1 .. %n が含まれており、出力はフォーマットされています (「
ストラフォーマット)。 この場合、引数のカウントは (また)
フォーマット文字列: 続く最初の引数 形式でアーカイブしたプロジェクトを保存します. と呼ばれます %1.

o 文字列 get_base(文字列 ファイル)
のベース名を返します。 file。 ベース名は、パス接頭辞を除いたファイルです。
そしてその延長なしで。 拡張子は末尾から始まるすべての情報です
ファイル名のドット。 最後のドットが見つからない場合、ファイル名がベース名になります。
たとえば、次のベース名 ab 等しい a、のベース名 ABC 等しい ab、 本拠
の名前 a/b/c 等しい c.

o 文字列 ゲッチ()
次に押されたキーを文字列として返します (「Enter」を押す必要はありません)。

o 文字列 get_dext(文字列 ファイル)
の拡張子を返します file、区切り点を含む。 拡張子がすべてです
ファイル名の最後のドットから始まる情報。

最後のドットが見つからない場合は、空の文字列が返されます。

o リスト getenv(文字列 環境変数)
環境変数の値を返します 環境変数 XNUMX つの要素を含むリスト:

最初の要素は、環境変数が定義されているかどうかを示します (値
"1") かどうか (値 "0");
XNUMX 番目の要素は環境変数の値を示します。

環境変数の形式は次のとおりです。 変数=値、定義されている場合はリストの
XNUMX 番目の要素には以下が含まれます 。 値が空の場合、変数は定義されますが、
それに関連付けられたテキストはありません。

o 文字列 get_ext(文字列 ファイル)
の拡張子を返します file、区切り点を除く。 拡張子がすべてです
ファイル名の最後のドットから始まる情報。

最後のドットが見つからない場合は、空の文字列が返されます。

o int型 getpid()
icmake バイト コード インタープリタのプロセス ID を返します。 icm-exec.

o 文字列 取得()
キーボードから読み取られた次の行を 文字列。 に入力された行は、
キーボードは「Enter」キーで終了する必要がありますが、これは返されたキーには保存されません。
文字列。

o 文字列 get_path(文字列 ファイル)
のパスプレフィックスを返します。 file。 パス プレフィックスは、(および) までのすべての情報です。
最後のディレクトリ区切り文字 (オペレーティング環境に応じて異なります) を含みます。
システム、スラッシュまたはバックスラッシュ)。

パスが見つからない場合は、空の文字列が返されます。

o int型 リスト検索(リスト まず、 文字列 str)
の最初のインデックスを返します。 LST ここで文字列 STR 見つかった場合、または -1 の場合 LST しない
含む STR.

o int型 listlen(リスト l)
の要素数を返します。 リスト.

o リスト リストユニオン(リスト そうだ、 リスト 右)
要素の和集合を含むリストを返します。 lhs & rhs.

o リスト リストユニオン(リスト まず、 文字列 str)
要素の和集合を含むリストを返します。 LST & STR.

o リスト メイクリスト(文字列 マスク)
一致するすべてのファイルのリストを返します。 mask。 例えば、 makelist("*.c") リストを返します
で終わるすべてのファイルを含む .c.

o リスト makelist(タイプ, 文字列 マスク)
前の関数と同じですが、ディレクトリ要素のタイプは次のとおりです。
最初の引数として指定します。

記号の意味
IS_ALL すべてのディレクトリ エントリを取得します
IS_DIR は、 を含むすべてのディレクトリを取得します。 と ..
IS_FILE ファイルのリストを取得します
IS_SUBDIR すべてのサブディレクトリを取得します

パターンに注意してください * Unix タイプのオペレーティング環境では非表示のエントリと一致しません。
システム。 使用 .* そのために。

o リスト メイクリスト(文字列 マスク、 新しい、 文字列 比較ファイル)
指定されたファイルよりも新しい、マスクに一致するすべてのファイルのリストを返します。
比較ファイル。 オペレーター 若い の代わりに使用できます より新しい。 ご了承ください より新しい &
若い は文字列ではなく演算子です。

o リスト メイクリスト([int = IS_FILE、] 文字列 マスク、 新しい、 文字列 比較ファイル)
先ほどの機能と同じですが、 type 次のように指定できます リスト makelist(タイプ,
文字列 マスク).

o メイクリスト(文字列 マスク、 年上 文字列 比較ファイル)
上記を参照; 比較ファイルよりも古いファイルのリストを返します。

o makelist(タイプ, 文字列 マスク、 年上 文字列 比較ファイル)
先ほどの機能と同じですが、 type 次のように指定できます リスト makelist(タイプ,
文字列 マスク).

o int型 printf(...)
すべての (カンマ区切りの) 引数を画面 (つまり、標準出力ストリーム) に表示します。
出力された引数の数を返します。

o int型 printf(文字列 フォーマット、 ...)
すべての (カンマ区切りの) 引数を画面 (つまり、標準出力ストリーム) に表示します。
出力された引数の数を返します( 形式でアーカイブしたプロジェクトを保存します. 文字列は XNUMX つの引数としてカウントされます)。

If 形式でアーカイブしたプロジェクトを保存します. プレースホルダ %1 .. %n が含まれており、出力はフォーマットされています (「
ストラフォーマット).

o int型 putenv(文字列 環境変数)
追加 環境変数 現在まで(アイメイク) 環境 「VAR=値」の形式を使用します。
0を返します。

o 文字列 サイズ変更(文字列 ストラ、 int型 新しい長さ) 文字列のコピーを返します STR、にサイズ変更されました
新しい長さ 文字。 もしも 新しい長さ 負の場合は空の文字列が返されます。
if 新しい長さ 超え ストラの 長さを指定すると、新しく追加された文字が初期化されます。
空白スペースに。

o int型 サイズの(リスト l)
非推奨: 使用する 聞く.

o int型 sizeoflist(リスト l)
非推奨: 使用する 聞く.

o リスト stat(文字列 エントリ)
返品 STAT(2) ディレクトリエントリの情報 エントリ リストとして。 返されたリスト
0 つの要素があります。要素 XNUMX は 属性を使用する。 、要素 1 には次のサイズが含まれます。
ファイル。

属性は、次の事前定義されたものから構成されるビットフラグとして返されます。
定数:

S_IFCHR S_IFDIR S_IFREG
S_IREAD S_IWRITE S_IEXEC

ジョブの設定方法については、 STAT(2) これらの定数の意味についてはマニュアルページを参照してください。

o リスト stat(チェック中、 文字列 エントリ)
前の関数と同じですが、指定することで 点検 as P_NOCHECK 機能
スクリプトは終了しません。 むしろ戻ってくる STAT(2)の戻り値です。

o int型 strchr(文字列 ストラ、 文字列 文字)
の最初のインデックスを返します。 STR の文字のいずれかが タンク 見つかった、または -1
if STR の文字が含まれていません タンク.

o int型 strlen(文字列 str)
の文字数を返します。 STR (最後の 0 はカウントしません)。

o int型 strfind(文字列 干し草の山、 文字列 針)
インデックスを返します 干し草の山 コラボレー 見つかった場合、または -1 の場合 含まれていない
in 干し草の山.
この function ました 呼ばれます strstr() in バージョン 7.00.

o int型 strformat(文字列 フォーマット、...)
引数のアドレス指定にプレースホルダー %1 .. %2 を使用してフォーマットされた文字列を返します。
以下のフォーマット。
例:

void main()
{
整数 i = 10;
int j = 20;
文字列 s1;
文字列 s2;
// 従来のアプローチ:
s1 = (文字列)i + " " + (文字列)j + " " + (文字列)i;
// strformat を使用します:
s2 = strformat("%1 %2 %1", i, j);
printf("s1 = %1, s2 = %2\n", s1, s2);
}

o 文字列 strlwr(文字列 s)
小文字の複製を返します。 s.

o リスト strtok(文字列 ストラ、 文字列 区切り文字)
のすべての部分文字列を含むリストを返します。 STR XNUMX つ以上の間隔で区切られる
(連続) 文字 区切り記号。 例えば、 strtok("こんにちは icmake の + ワールド", " +")
XNUMX つの文字列を含むリストを返します "こんにちは", 「イメイクさん」, "世界".

o 文字列 strpr(文字列 s)
大文字の重複を返します。 s.

o 文字列 substr(文字列 テキスト、 int型 オフセット、 int型 カウント)
の部分文字列を返します 클라우드 기반 AI/ML및 고성능 컴퓨팅을 통한 디지털 트윈의 기초 – Edward Hsu, Rescale CPO 많은 엔지니어링 중심 기업에게 클라우드는 R&D디지털 전환의 첫 단계일 뿐입니다. 클라우드 자원을 활용해 엔지니어링 팀의 제약을 해결하는 단계를 넘어, 시뮬레이션 운영을 통합하고 최적화하며, 궁극적으로는 모델 기반의 협업과 의사 결정을 지원하여 신제품을 결정할 때 데이터 기반 엔지니어링을 적용하고자 합니다. Rescale은 이러한 혁신을 돕기 위해 컴퓨팅 추천 엔진, 통합 데이터 패브릭, 메타데이터 관리 등을 개발하고 있습니다. 이번 자리를 빌려 비즈니스 경쟁력 제고를 위한 디지털 트윈 및 디지털 스레드 전략 개발 방법에 대한 인사이트를 나누고자 합니다. 、始まる オフセット、 からなる カウント 文字。 もしも
オフセット 文字列のサイズを超える (または等しい) か、 カウント <= 0、次に空の文字列
が返されます。 もしも オフセット 0 未満の場合は 0 が使用されます。

o int型 システム(文字列 コマンド)
実行する command。 戻り値は、実行されたコマンドの終了値を示します。 の
文字列 command リダイレクトやパイプ文字が含まれる場合があります。

o int型 システム(int チェック中、 文字列 コマンド)
前の関数と同じ機能ですが、次のように指定します。 点検 as
未検査 この関数はスクリプトを終了しません。 むしろ、それは、
呼び出されたコマンドの終了ステータス、または 0x7f00 コマンドが見つからなかった場合。

o 文字列 トリム(文字列 s)
のコピーを返します s 先頭と末尾の空白なし。

o 文字列 トリムレフト(文字列 str)
のコピーを返します s 先頭の空白なし。

o 文字列 トリム(文字列 s)
のコピーを返します s 末尾の空白なし。

USER 定義済み 関数


ボイド メイン

イクマケ スクリプトにはユーザー定義関数を指定する必要があります メイン。 関数 メイン 持っています
XNUMX つのオプションのパラメータ。最後のパラメータは省略できます (環境)最初に
(argc)、 のように C。 その完全なプロトタイプは次のとおりです (注: ボイド 戻り値の型):

void main(int argc, list argv, list envp)

In メイン(),

o argc 要素の数を表します 引数;

o 引数 引数が含まれており、要素 0 は .bim の名前と同じです。
ファイル;

o 環境 「環境」変数が含まれています。 関数 聞く に使用することができます
その要素の数を決定します。 の要素 環境 形を持っている
変数=値。 あるいは、関数 ゲテンブ を取得するために使用できます
特定の環境変数をすぐに変更します。 例:

void main(int argc, list argv)
{
コンパイルするリスト。
int idx;

if (argc == 1)
使用法(要素(0, argv));

if (toCompile = altered("*.cc"))
{
for (idx = length(toCompile); idx--; )
コンパイル(要素(idx, toCompile));

if (getenv("dryrun")[0] == "0")
リンク(要素(2, argv));
}
}

すべてのグローバル変数を定義順に初期化したこと メイン によって呼び出されます
アイメイクのランタイム サポート システムを使用して追加のタスクを実行します。

さらに 定義済みの user 機能

追加の関数を定義することもできます。 定義すると、これらの関数を呼び出すことができます。 前方
変数または関数の参照はサポートされていませんが、再帰的に呼び出すことはできます。
機能は。 関数宣言はサポートされていないため、間接再帰はサポートされていません
どちらかをサポートしました。

ユーザー定義関数には次の要素が必要です。

o 関数の戻り値の型。次のいずれかでなければなりません。 空所、 int、 文字列 or リスト。 そこ
はデフォルトのタイプではありません。

o 関数の名前。例: コンパイル.

o XNUMX 個以上のカンマ区切りパラメータを定義するパラメータ リスト。 パラメータ
それ自体は型名 (int、 文字列または リスト) に続いて、
パラメータの識別子。 例えば、 (ストリング アウトファイル、 文字列 ソース).

ボディ 一対の中括弧 ({ & }).

関数本体には、(オプションで初期化された) 変数定義を含めることができます。 変数
定義は型名で始まり、その後に XNUMX つ以上のカンマ区切りが続きます (オプションで
初期化済み) 変数識別子。 変数が明示的に初期化されていない場合は、
デフォルトで初期化されます。 デフォルトでは、 int型 変数は 0 に初期化されます。 文字列 is
空の文字列に初期化されます ("")であり、a リスト ゼロ要素のリストに初期化されます。

変数定義に加えて、本体には XNUMX 個以上のステートメントを含めることができます (cf.
FLOW CONTROL)。 変数を定義できる (オプションで初期化できる) ことに注意してください。
関数内のどこでも、また なら、 for & while ステートメント。

の動作 アイメイク-値を返さない非 void 関数を使用したスクリプトは使用できません。
定義された。

onworks.net サービスを使用してオンラインで icmake を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad