Mac OS System 7 から OS 9 で、標準の Unix 機能に依存する C 機能がいくつ動作するか興味があります。このプラットフォームでの開発経験はありませんが、標準のコマンド ラインもどこにもないことはわかっています。動作するストリーム。コマンドラインがない場合、コマンドライン引数はありますか? 環境変数はどうですか?
昔ながらの Mac OS プログラミング ガイドを探してみましたが、驚くほど見つけにくいものです。
Mac OS System 7 から OS 9 で、標準の Unix 機能に依存する C 機能がいくつ動作するか興味があります。このプラットフォームでの開発経験はありませんが、標準のコマンド ラインもどこにもないことはわかっています。動作するストリーム。コマンドラインがない場合、コマンドライン引数はありますか? 環境変数はどうですか?
昔ながらの Mac OS プログラミング ガイドを探してみましたが、驚くほど見つけにくいものです。
まず第一に、Unix に依存する C 機能はありません。C は Windows で問題なく動作し、8 ビット マイクロコントローラでも問題なく動作します。
従来の Mac OS に関しては、Metrowerks CodeWarrior と Apple の MPW という 2 つの主要なプログラミング環境がありました。
CodeWarrior には SIOUX というライブラリが付属しており、ウィンドウを開いて簡単な I/O を提供していました。すべてprintf
のステートメントがこのウィンドウに出力されます。パイプやソケットはありませんが、それは C 標準の一部ではありません (パイプは POSIX の一部です)。SIOUX を使用すると、移植可能な C に固執する限り、単純なプログラムを Mac OS に移植できます。
Apple の MPW はもう 1 つの選択肢でした。MPW は、コマンド ライン、一連のコマンド ライン プログラム (C、C++、Pascal、アセンブリ用のコンパイラ)、およびプログラムへのコマンド ライン引数を生成するためのダイアログ ボックス「シェル」を提供しました。パイプを使用したり、環境変数を設定したりすることもできます。
ただし、Unix と MPW の機能にはいくつかの大きな違いがありました。MPW は優れたインターフェイスを備えていましたが、2 つのコマンド ライン プログラムを同時に実行することはできませんでした。一方を一時停止して他方を実行するという非常に些細なケースでも同様です。これは、「make」プログラムがコンパイラーを実行できないことを意味していました。代わりに、「make」は、コンパイラを実行するシェル スクリプトを生成しました。通常、「make」を実行し、結果の出力をシェル スクリプトとして実行する、ある種のキーボード ショートカットがあります。
さて、これはパイプが機能しないことを暗示しているように見えますが、パイプは一時ファイルを操作するための構文糖衣にすぎないと思います。
私の知る限り、Xcode には MPW の遺産はありません。Xcode は、NeXT で開発された Project Builder から派生したものであり、NeXT は常に Unix でした。Apple は古い MPW コマンドライン ツールの一部を OS X に移植しましたが、多くはありません。大きなものはRez
(およびDeRez
) です。それらは最新の Xcode に同梱されているので、おそらくまだ使用している人がいると思います。Rez ヘッダーはまだあります。過去のチェックアウトから爆風を得るために:
find /System/Library/Frameworks -name '*.r'
Apple は開発用 Web サイトから 10.6 より古いものを完全に削除したようですが、これは少し残念です。少し前までは、Apple の Web サイトで、すべての「Inside Macintosh」シリーズを含む、Carbon 以前の古いドキュメントをまだ見つけることができました。また、以前は Apple の FTP サイト (無料) から MPW を入手することもできました。私はまだダウンロードしていますが、今でもダウンロードできるかどうかはわかりません。
Sheep Shaver をどうにかして動作させた場合を除き、これをいじる前に 10.4 (またはそれ以前) と PowerPC コンピュータが必要になることに注意してください。
おかしな話ですが、MPW の C コンパイラが生成するおかしなエラー メッセージがいくつかありました。
あなたのプログラムのこの時点で、typedef名は私にとって完全な驚きでした 定数を変更したり、アップストリームをフロートしたり、IRS で議論に勝ったり、このコンパイラを満足させたりすることはできません ...そして主は言った、「見よ、switch文の中にはケースまたはデフォルトのラベルしかないだろう」 型 (キャスト) はスカラーでなければなりません。ANSI 3.3.4; 39 ページ、10 ~ 11 行目 (気にしないことはわかっています。私はただあなたを困らせようとしているだけです) 偏執症と呼んでください。しかし、このコメント内に「/*」があると疑わしくなります。 シンボル テーブルがいっぱいです - 致命的なヒープ エラーです。お近くの Apple 販売店から RAM のアップグレードを購入してください。 1 行にエラーが多すぎる (数を減らす) このラベルは、このラベルを含むブロックの外部からの goto のターゲットであり、かつ、このブロックには初期化子を持つ自動変数があり、かつ、ウィンドウがこのエラー メッセージ全体を読み取るのに十分な幅がありませんでした 私たちはすでにこの機能を実行しました
THINK C/Symantec C には、コマンド ライン プログラムの移植を比較的容易にする標準 I/O ウィンドウもありました。プログラムの引数がダイアログから入力されました。
しかし、これを実現するための最も優れた方法は、MPW (Macintosh Programmer's Workshop) を使用することでした。これは、MacOS にとって非常に優れたコマンド ライン環境であり、優れたエディターであり、スクリプト可能で、さまざまな "ツール" が組み込まれており、多くの便利な GUI 機能が組み込まれています (つまり、本当に Mac に似ていました)。
何年もの間、これは Apple の開発者 Web サイトから自由にダウンロードできました。リンクは今はなくなっているようですが、少し検索すればコピーがオンラインで見つかるはずです。(MPW-GM.img.bin または mpw-gm_images を検索してみてください。)