我很好奇有多少依赖于标准Unix功能的C功能可以在Mac OS System 7到OS 9上运行。我没有任何平台开发经验,但我知道没有命令行也没有任何地方使标准流工作。没有命令行是否有任何命令行参数?环境变量怎么样?
我确实尝试过寻找经典的Mac OS编程指南,但是很难找到它们。
答案 0 :(得分:11)
首先,没有依赖于Unix的C功能。 C在Windows上运行得很好,它在8位微控制器上运行得很好。
对于经典Mac OS,有两种主要的编程环境:Metrowerks CodeWarrior和Apple的MPW。
CodeWarrior附带了一个名为SIOUX的库,它打开了一个窗口并提供了简单的I / O.任何printf
语句都将打印到此窗口。没有管道或插座,但这不是C标准的一部分(管道是POSIX的一部分)。使用SIOUX,你可以将一个简单的程序移植到Mac OS,只要它粘在便携式C上。
Apple的MPW是另一种选择。 MPW提供了一个命令行,一堆命令行程序(用于C,C ++,Pascal,汇编的编译器)和用于为程序生成命令行参数的对话框“shell”。您甚至可以使用管道,设置环境变量等等。
但是,Unix和MPW之间的功能存在一些重大差异。 MPW有一个很棒的界面,但你不能同时运行两个命令行程序,即使在一个暂停运行另一个程序的非常简单的情况下也是如此。这意味着“make”程序无法运行编译器。相反,“make”生成了一个运行编译器的shell脚本。您通常会使用某种键盘快捷键来运行“make”,然后将结果输出作为shell脚本运行。现在,这似乎暗示管道不起作用,但我认为管道只是处理临时文件的语法糖。
据我所知,Xcode没有MPW遗产。 Xcode源于在NeXT开发的Project Builder,NeXT总是Unix。 Apple将一些旧的MPW命令行工具移植到OS X,但并不多。最重要的是Rez
(和DeRez
)。由于它们附带最新的Xcode,我猜某人可能仍在使用它们。 Rez标题仍然存在,以便从过去检查中获得爆炸:
find /System/Library/Frameworks -name '*.r'
似乎苹果公司已经在他们的开发网站上删除了超过10.6的任何东西,这有点遗憾。不久之前,您仍然可以找到旧的Carbon前文档,包括Apple网站上的所有“Inside Macintosh”系列。您以前也可以从Apple的FTP站点获取MPW(它是免费的),我仍然有下载,但我不知道您是否仍然可以下载它。
请注意,你需要10.4(或更早)和一台PowerPC电脑才能考虑玩这个,除非你设法让Sheep Shaver工作。
有趣的消息,MPW的C编译器可以产生一些有趣的错误消息。
a typedef name was a complete surprise to me at this point in your program You can't modify a constant, float upstream, win an argument with the IRS, or satisfy this compiler ...And the lord said, 'lo, there shall only be case or default labels inside a switch statement' type in (cast) must be scalar; ANSI 3.3.4; page 39, lines 10-11 (I know you don't care, I'm just trying to annoy you) Call me paranoid but finding '/*' inside this comment makes me suspicious Symbol table full - fatal heap error; please go buy a RAM upgrade from your local Apple dealer Too many errors on one line (make fewer) This label is the target of a goto from outside of the block containing this label AND this block has an automatic variable with an initializer AND your window wasn't wide enough to read this whole error message we already did this function
答案 1 :(得分:4)
THINK C / Symantec C还有一个标准的I / O窗口,使移植命令行程序相对容易。程序参数通过对话框输入。
但是,最好的方法是使用MPW - Macintosh Programmer's Workshop。对于MacOS来说,这是一个非常好的命令行环境,优秀的编辑器,可编写脚本的,各种“工具”以及内置的许多有用的GUI方面(因此它真的像Mac一样)。
多年来,这可以从Apple的开发者网站免费下载。看起来这个链接现在可能已经消失,但我确信可以在网上找到一个副本并进行一些搜索。 (尝试搜索MPW-GM.img.bin或mpw-gm_images。)
肯