Mac OS 7-9 - программирование на C

Мне любопытно, сколько функций C, которые зависят от стандартных функций Unix, работают в Mac OS System 7 до OS 9. У меня нет опыта разработки с платформой, но я знаю, что нет ни командной строки, ни где-либо для стандарта потоки на работу. Без командной строки есть какие-либо аргументы командной строки? Как насчет переменных среды?

Я пытался найти классическое руководство по программированию для Mac OS, но его на удивление трудно найти.

2 ответа

Прежде всего, нет никаких функций C, которые зависят от Unix. C отлично работает в Windows и отлично работает на 8-битных микроконтроллерах.

Что касается классической Mac OS, то здесь было две основные среды программирования: Metrowerks CodeWarrior и Apple MPW.

  1. CodeWarrior поставляется с библиотекой под названием SIOUX, которая открывает окно и обеспечивает простой ввод / вывод. любой printf заявления будут печатать в это окно. Там нет ни труб, ни розеток, но это все равно не является частью стандарта C (трубы являются частью POSIX). Используя SIOUX, вы можете перенести простую программу на Mac OS, если она будет привязана к переносимому C.

  2. MPW от Apple был другой вариант. MPW предоставил командную строку, набор программ командной строки (компиляторы для C, C++, Pascal, сборка) и диалоговые окна "оболочки" для генерации аргументов командной строки для программ. Вы могли бы даже использовать каналы, установить переменные окружения и так далее.

    Однако между Unix и MPW были некоторые существенные различия в функциональности. У MPW был отличный интерфейс, но вы не могли запускать две программы командной строки одновременно, даже в очень тривиальном случае, когда одна приостанавливается для запуска другой. Это означало, что программа "make" не могла запустить компилятор. Вместо этого "make" сгенерировал скрипт оболочки, который запустил бы компилятор. Обычно у вас есть какое-то сочетание клавиш, которое запускает "make", а затем запускает полученный вывод в виде сценария оболочки.

    Теперь, похоже, подразумевается, что каналы не будут работать, но я думаю, что каналы были просто синтаксическим сахаром для работы с временными файлами.

    Насколько я знаю, у Xcode нет наследия MPW. Xcode происходит от Project Builder, который был разработан в NeXT, а NeXT всегда был Unix. Apple перенесла некоторые из старых инструментов командной строки MPW в OS X, но не так много. Большой Rez (а также DeRez). Так как они поставляются с последним Xcode, я думаю, что кто-то, вероятно, все еще использует их. Заголовки Реза все еще рядом, чтобы получить удовольствие от прошлой проверки:

    find /System/Library/Frameworks -name '*.r'
    

Похоже, что Apple действительно вычистила свой веб-сайт для разработки чего-то старше 10.6, что немного обидно. Не так давно на сайте Apple можно было найти старую предуглеродную документацию, в том числе всю серию "Inside Macintosh". Раньше вы также могли получать MPW с FTP-сайта Apple (он был бесплатным), и у меня все еще есть загрузки, но я не знаю, можете ли вы его скачать.

Имейте в виду, что вам понадобится 10.4 (или более ранний) и компьютер PowerPC, прежде чем вы даже сможете подумать об этом, если только вам не удалось заставить работать Sheep Shaver.

Забавный лакомый кусочек, были некоторые забавные сообщения об ошибках, которые мог выдать C-компилятор MPW.

имя typedef стало для меня полной неожиданностью в этой точке вашей программы

Вы не можете изменить константу, всплыть вверх по течению, выиграть аргумент с IRS или удовлетворить этот компилятор... И господин сказал: "Вот, внутри оператора switch должны быть только метки case или default"

тип в (приведение) должен быть скалярным; ANSI 3.3.4; стр. 39, строки 10-11 (я знаю, что тебе все равно, я просто пытаюсь тебя раздражать)

Назовите меня параноиком, но нахождение "/*" внутри этого комментария вызывает у меня подозрение

Таблица символов заполнена - фатальная ошибка кучи; пожалуйста, купите обновление оперативной памяти у местного дилера Apple

Слишком много ошибок в одной строке (сделать меньше)

Эта метка является целью goto извне блока, содержащего эту метку И этот блок имеет автоматическую переменную с инициализатором И ваше окно не было достаточно широким, чтобы прочитать все это сообщение об ошибке

мы уже сделали эту функцию

THINK C/Symantec C также имеет стандартное окно ввода / вывода, которое делает перенос программ командной строки относительно простым. Аргументы программы были введены через диалог.

Но, безусловно, самый хороший способ сделать это был с MPW - Мастерская программиста Macintosh. Это была очень хорошая среда командной строки для MacOS, отличный редактор, сценарии, различные "инструменты" и множество встроенных полезных аспектов GUI (так что это было действительно Mac-like).

В течение многих лет это можно было свободно скачать с сайта разработчика Apple. Похоже, что ссылки сейчас нет, но я уверен, что копию можно найти в Интернете с небольшим поиском. (Попробуйте найти MPW-GM.img.bin или mpw-gm_images.)

кругозор

Другие вопросы по тегам