англійськафранцузькаіспанська

Ad


Значок OnWorks

icmake - онлайн в хмарі

Запустіть icmake у постачальника безкоштовного хостингу OnWorks через Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

Це команда icmake, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS.

ПРОГРАМА:

ІМ'Я


icmake - обслуговування програми (зробити) утиліта за допомогою a C- як граматика

СИНТАКСИС


icmake [параметри] джерело[.im] [dest[.bim]] [-- [args]]

icmun бім-файл

ОПИС


Icmake(1) можна використовувати як альтернативу зробити(1). У своєму стандартному режимі роботи він
викликає такі програми:

o icm-pp для попередньої обробки файлу icmake

o icm-comp для компіляції байт-коду icmake s

o icm-exec для виконання файлу байт-коду

Icmake дозволяє програмістам використовувати мову програмування (близько нагадує добре відому
C-мова програмування) для визначення дій, які беруть участь у (складній) програмі
обслуговування. Для цього, icmake пропонує різноманітні спеціальні оператори, а також набір підтримки
функції, які виявилися корисними для підтримки програми.

Програма icmun(1) можна використовувати для розбирання скомпільованого файлу байт-коду (.bim). Ікмун
в основному використовується для ілюстрації, навчання та налагодження.

Традиційні утиліти make перекомпілюють джерела після зміни файлів заголовків. В
контексту C + + розробка програми часто є поганою ідеєю, оскільки додавати нового учасника до a
клас зазвичай не вимагає від вас перекомпіляції джерел класу. Для обробки класу
залежно icmbuld(1) може перевірити КЛАСИ файли, які можна використовувати для визначення залежностей
серед класів. За замовчуванням класові залежності не інтерпретуються. Зверніться до icmconf(7)
man-сторінку для отримання додаткової інформації.

ВАРІАНТИ


Icmake використовує такі файли та параметри:

o джерело: icmake вихідний файл сценарію (розширення за замовчуванням: .im).

o dest: двійковий icmake файл сценарію (за замовчуванням: `джерело'.bim, званий `.bim файлом'
нижче).

o --: icmake роздільник аргументів icmake аргументи з переданих аргументів
до .bim filenl() аргументи: аргументи наступні -- передаються до файлу .bim
як є, і доступні з список argv параметр, визначений як icmake
сценарії основний другий параметр функції (див. нижче в розділі USER ВИЗНАЧЕНИЙ
ФУНКЦІЇ). Для деяких варіантів (див. нижче) -- роздільник не потрібен.

Icmake підтримує різні параметри, описані далі. The -h опція переважає всі інші
варіанти, -a Параметр переважає всі інші опції, крім -h. З решти дій
варіанти (-б, -c, -е, -я, -p та -t) можна вказати лише одне:

o -a
показати інформацію про icmake, відхилено -h;

o -b
припинено: замість цього використовуйте опцію -e;

o -c
icmake вихідний файл компілюється, генеруючи файл .bim;

o -e
виконати icmake .bim файл, заданий як icmakeперший аргумент файлу. Будь-які додаткові
Аргументи передаються до файлу .bim як є, і -- не слід вказувати;

o -F
назви файлів і позначки, а також огляд усіх дій, які потрібно виконати
icmake відображаються в стандартному вихідному потоці;

o -h
надати інформацію про використання та завершити icmake;

o -i
перший аргумент - це icmake вихідний файл, двійковий файл за замовчуванням є
будується при необхідності. Будь-які додаткові аргументи передаються до файлу .bim
як є, і -- не слід вказувати;

o -p
icmake вихідний файл лише попередньо оброблений, а попередньо оброблений файл записується
до icmakeДругий аргумент файлу (за замовчуванням `source'.pim);

o -q
ігнорується, буде видалено в майбутньому icmake версія;

o -t
аргумент наступний -t – ім’я тимчасового файлу .bim, який видаляється
після icmakeдзвінок. Коли . вказано як ім’я тимчасового файлу .bim
потім тимчасовий каталог за замовчуванням, а потім icmake's process-id, за яким слідує
.bim використовується.

Після імені тимчасового файлу .bim вкажіть назву файлу icmake вихідний сценарій
необхідно вказати. Будь-які додаткові аргументи передаються до файлу .bim як є, і
-- не слід вказувати; Після встановлення прапора виконуваного файлу вихідного сценарію
(CHMOD +x сценарій), і надаючи йому початковий рядок, наприклад:

#!/usr/bin/icmake -t.

icmake скрипт можна безпосередньо викликати:

скрипт arg1 arg2

в такому випадку icmake сценарій `сценарій' виконується під час отримання
аргументація сценарій arg1 arg2.

o -T
цей параметр має бути забезпечений іменем каталогу, який використовується для зберігання
тимчасові файли. Наприклад, при складанні an icmake сценарій, вихід з icmakeАвтора
препроцесор - це тимчасовий файл, який видаляється при виході. За замовчуванням / Tmp використовується,
якщо не / Tmp не є доступним для запису каталогом, у цьому випадку каталог поточного користувача $ HOME
використовується каталог. Неявні тимчасові імена файлів завжди починаються з ідентифікатора процесу
поточний icmake процесу.

o -v
дисплей icmakeномер версії та кінець icmake, відхилено -h

Ікмун:

бім-файл: двійковий icmake файл сценарію.

ПРЕПРОЦЕСОР ДИРЕКТИВИ


Доступні такі директиви препроцесора:

o коментар:
standard C коментар (все між /* та */), а також від коментарів до кінця рядка (всі
вміст рядка нижче //) ігноруються.

o Запуск оболонки: перший рядок icmake-скрипт може починатися з #!шлях, Де
шлях визначає абсолютне розташування icmake програма. Виготовивши сценарій
виконуваний, його можна викликати без явного виклику icmake.

Наприклад, якщо перший рядок (виконуваного) 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 #включати "ім'я файлу"
Файл ім'я файлу включено в місце розташування директиви

o #включати
Файл ім'я файлу включено за місцем розташування #включати директива; ім'я файлу
виконується пошук у каталогах, розділених двокрапкою, визначених параметром IM навколишнє середовище
змінний. Перше поява ім'я файлу у довідниках, зазначених в IM
використовується змінна середовища.

o #визначити ідентифікатор [визначення]
Текст ідентифікатор буде замінено на визначення. Визначення може містити
посилання на вже визначені ідентифікатори, використовуючи ${identifier} формат. Якщо
${identifier} не визначено (поки що), текст ${identifier} буквально зберігається.
Щоб запобігти нескінченній рекурсії, не більше 100 ${identifier} заміни допускаються.

Визначення продовжуються на наступному рядку, якщо останнім символом у рядку є a
зворотний слеш (\). (що не входить у визначення). Препроцесор
об’єднує рядки з подвійними лапками, а рядки з подвійними лапками не можуть охоплювати декілька
лінії. Кілька пробілів (за межами подвійних лапок) у визначеннях є
зведено до одного порожнього місця.

Визначення, наступне за #define's ідентифікатор необов'язковий. Якщо пропущено, то
макрос визначено, тому його можна використовувати в #if(n)def директиви (див. нижче), але вони
не замінюються жодним текстом у icmake кодові оператори.

o #ifdef ідентифікатор
Якщо ідентифікатор макрос був визначений наступним блоком коду (до збігу #else
or #endif директиву прочитано) скомпільовано по байтам. В іншому випадку блок коду є
ігнорується.

o #ifndef ідентифікатор
Якщо ідентифікатор макрос був НЕ визначено наступний блок коду (до збігу
#else or #endif директиву виявлено) скомпільовано по байтам. В іншому випадку блок
код ігнорується.

o #else
Припиняє а #ifdef та #ifndef директиви, яка скасовує рішення про прийняття
наступний код. Тільки один #else директива може бути пов'язана з #if(n)def
директиви.

o #endif
Завершує блок препроцесора, починаючи з узгодження #ifdef, #ifndef or #else
директива. The #endif каталог та його відповідність #if(n)def директива має бути
зазначено в тому самому файлі.

o #undef ідентифікатор
Видалення ідентифікатор із набору визначених символів. Це не впливає на
специфікація будь-яких раніше визначених символів, у яких ідентифікаторів визначення
був використаний. Якщо ідентифікатор не визначено, видається попередження.

ДАНІ ВИДИ


Icmake підтримує такі типи даних:

o ASCII характер постійна
Символьні константи ASCII складаються з одного символу, оточеного одинарним або подвійним
цитати. Поодинокі символи (наприклад, 'а') представляють самого персонажа. Стандартний
вихідні послідовності (наприклад, '\n') підтримуються та представляють їх перетворений стандарт
значення (наприклад, '\n' представляє значення ascii 10 (десяткове)). Нестандартна втеча
послідовності (наприклад, '\x') представляють символ ascii після escape-символу
(тому '\x' дорівнює 'x'). Відображають вихідні послідовності, що складаються з трьох вісімкових цифр
символ ascii, що відповідає вісімковому значенню за модулем 256 (наприклад, '\123').
Відображають вихідні послідовності, що складаються з x, за яким слідують дві шістнадцяткові цифри
символ ascii, що відповідає шістнадцятковому значенню (наприклад, '\xa4').

o Int
Інтегральні значення, починаючи від -0x8000 через 0x7fff. Int константи можуть бути
у вигляді десяткових чисел (починаючи з цифр від 1 до 9), вісімкових чисел
(починаючи з 0, за яким слідує одна або кілька вісімкових цифр) шістнадцяткові числа
(починаючи з 0x, за яким слідує одна або кілька шістнадцяткових цифр) або як ASCII
символьні константи.

o рядок
Текстові змінні. Рядкові константи розмежовуються подвійними лапками. Кілька рядків
константи можуть бути об’єднані, але одна рядкова константа не може охоплювати декілька
лінії. Рядкові константи, розділені лише пробілом (тобто пробіли, нові рядки,
коментар) об’єднані і представляють одну константу рядка. Щоб вказати на
кінець рядка в константі рядка використовувати \n вихідна послідовність.

Також можна використовувати символьні константи ASCII, оточені подвійними лапками
арифметичні вирази, якщо один з операндів є an Int. Єдиний персонаж
рядкова константа повинен бути константою і не може бути a рядок змінна.

Аналогічно можна використовувати символьні константи ASCII, оточені одинарними лапками
ситуації, коли очікується рядковий операнд.

o список
Структура даних, що містить ряд індивідуально доступних рядок цінності. Коли
список містить елементи, його перший елемент позначений індексом 0.

o анулювати
Використовується з визначеннями функцій, щоб вказати, що функція не повертає a
value.

Змінні можуть бути визначені на глобальному рівні, а також на будь-якому локальному рівні всередині
функції. Якщо визначено всередині функцій, стандарт C правила визначення обсягу та видимості
застосовувати. Наприклад, локальні змінні можна використовувати лише як власні або більш глибоко вкладені
блоків, їх видимість маскується в більш глибоко вкладених блоках шляхом визначення ідентично
іменована змінна всередині цих більш глибоко вкладених блоків. Змінні сильно типізовані, і
не може мати тип анулювати.

Змінні можуть бути ініціалізовані, коли вони визначені. Ініціалізації є виразами, тобто
може використовувати попередньо або визначені користувачем функції, постійні значення та значення змінних, які є
видно в точці визначення.

ЗАВЕРШЕНИЙ КОНСТАНТИ


Наступні константи попередньо визначені icmake. Всі постійні Int значення:

──────────────────────────────────
значення символу, призначене для
──────────────────────────────────
O_ALL 8 makelist
Список створення O_DIR 2
O_FILE 1 список створення
O_SUBDIR 4 makelist
──────────────────────────────────
ВИМКНЕНО 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, зазвичай з компілятором gcc GNU
В якості альтернативи може бути доступний UNIX
linux x86 під керуванням Linux (зазвичай із gcc)
В якості альтернативи може бути доступний LINUX
M_SYSV, M_UNIX x86 під керуванням SCO/Unix
_POSIX _SOURCE Unix з компілятором, сумісним із Posix
__hpux HP-UX, з рідним компілятором HP
─────────────────────────────────────────────────── ──────────────

ОПЕРАТОРИ


типу int операнд(и):

ВСІ C доступні оператори (крім операторів вказівника, як icmake не підтримує
покажчики). Вони діють як свої C- аналоги мови програмування.

рядковий тип операнд(и):

для рядок тип змінних та/або констант доступні такі оператори (a та b
представляти рядок змінні або константи):

o a + b: повертає новий рядок значення, що містить конкатенацію рядок величини a
та b. Зверніть увагу на це рядок константи можна безпосередньо об’єднати (без використання +
оператор), наприклад, обидва наступні два рядки визначають рядок "Здравствуйте світ ":

"Привіт Світ"
"привіт " + "світ"

o a += b: a має бути рядок змінна, до якої рядок змінна або значення b is
додається.

o порівняння рядків: оператори == != <= >= < > != та == може застосовуватися до рядок
значення або змінні, повертаючи 1, якщо порівняння успішне, інакше 0.
Порівняння чутливе до регістру та слідує за впорядкуванням або символами, як визначено
в ASCII набір символів.

o !a: логічне значення ! Оператор (не) повертає 1, якщо рядок a порожній, інакше 0 є
повернувся.

o a молодший b, a новіший b: повертає 1 якщо файл a є новішим, ніж файл b. Наприклад,
"source.cc" новіший "джерело.o". Файли a та b не повинні існувати: якщо обох немає
існує 0 повертається; якщо b не існує, повертається 1; якщо a не існує 0 є
повернувся; якщо вони однаково старі, повертається 0. ( існує () попередньо визначена функція
(див. нижче, розділ ЗАВЕРШЕНИЙ ФУНКЦІЇ) можна використовувати, щоб явно перевірити, чи a
файл існує).

o a старший b: повертає 1 якщо файл a є старшим за файл b. Наприклад, "libprog.a" старший
"джерело.o". Файли a та b не повинні існувати: якщо обидва не існують, 0 є
повернувся; якщо a не існує, повертається 1; якщо b не існує 0 повертається; якщо
вони однаково старі, повертається 0.

o []: оператор індексу отримує символ із рядкової змінної або константи: it
повертає рядок як rvalue. Отже, наступний оператор компілює OK:

// припустимо, що str1 і str2 є рядками
str1 = str2[3];

але наступний оператор не буде компілюватися:

str2[3] = "a";

Якщо вказано недійсне значення індексу, повертається порожній рядок.

o Оператор `backtick` (`рядок cmd`)
Рядок, розміщений між двома зворотними галочками, виконується попен(3) функція. The
стандартний вихід, створений командою, яка зберігається в рядковому аргументі
повернуто у вигляді списку. Порожній список вказує на те, що команда не може бути виконана.
Команда, яка може бути виконана, але не дала жодного результату, повертає список
містить один порожній елемент. Стандартний висновок потоку помилок команди не є
зібраний оператором backtick. Проте стандартне перенаправлення оболонки може бути
використовується для збору вихідних даних стандартного потоку помилок. приклад:

printf(`"ls"`); // друкує елементи в
// поточний каталог

Попередньо визначена функція eval(рядок cmd) веде себе точно так само, як і зворотна галочка
оператор: це синоніми.

у вигляді списку операнд(и):

для список Тип змінних та/або значень доступні такі оператори:

o a + b: повертає новий список значення, що містить конкатенацію список величини a та
b, Це НЕ операція набору: якщо елемент з’являється одночасно в a і в b, вони будуть
двічі відображаються в отриманому списку (set-addition забезпечується вбудованим
функція listunion).

o a - b: повертає новий список значення, що містить елементи в a які відсутні
in b, це is операція set-difference: повернутий список містить усі елементи
in a які не є елементами b.

o a += b: елементи в b додаються до елементів у a, який має бути a список
змінний. Це НЕ встановлена ​​операція.

o a -= b: елементи в b видаляються з елементів в a, який має бути a список
змінний. Це is операція набору: всі елементи a які знаходяться в b він має
видалено з a.

o перелік порівнянь рівності: оператори != та == може застосовуватися до список значення або
змінні. Оператор == повертає 1, якщо обидва списки поелементно ідентичні
елементів, інакше повертається 0. Оператор != змінює результат ==.

o !a: логічне значення ! оператор повертає 1, якщо список a порожній, інакше 0 є
повернувся.

o []: оператор індексу отримує елемент списку зі змінної списку: він повертає a
рядок як rvalue. Отже, наступний оператор компілює OK:

// припустимо, що lst - це список, str - це рядок
str = lst[3];

але наступний оператор не буде компілюватися:

lst[3] = str;

Якщо вказано недійсне значення індексу, повертається порожній рядок.

Кастинг:

Переведення типу може бути виконано за допомогою стандарту C cast-operator для приведення:

o Рядки до ints і навпаки ((int) "123", (рядок)55)

o Рядки до списків (список LST = (список) "привіт")

ПОТІК КОНТРОЛЬ


Icmake пропонує наступну підмножину Cзаяви Росії. Їх можна використовувати як в C
мова програмування

o вираз ;
Простий вираз виразу;

o Складене твердження
Змінні будь-якого типу можуть бути визначені та ініціалізовані в будь-якому місці всередині будь-якої сполуки
заяву. видимість змінної починається з точки її визначення.

o if (хвороба) заяву
Всередині умови може бути визначена та ініціалізована змінна. наприклад,

якщо (рядок str = getText())
процес (str);

У цьому прикладі процес не називається якщо getText () повертає порожній рядок. The
змінна вул не існує ні до, ні після if Заява

o if (хвороба) заяву ще заяву
Як і в попередньому операторі, всередині умови може бути визначена змінна і
ініціалізовано.

o та цінності (у цьому; хвороба; приріст) заяву
Змінні (одного типу) можуть бути ініціалізовані (і за бажанням бути визначені) у файлі
ініціалізації розділ. The ініціалізації, стан та приріст розділи можуть залишатися порожніми. The
порожній розділ умов інтерпретується як "завжди". правда.

o в той час як (хвороба) заяву
Всередині умови може бути визначена та ініціалізована змінна.
Додатковий do ... поки () заява недоступна. Зверніть увагу, що визначення a
змінної, використовуючи вираз ініціалізації, означає, що ініціалізація
вираз виконується на кожній ітерації в той час як заяву. Отже, наступне
оператор ніколи не закінчиться і відобразить нескінченний потік значень 10:

тоді як (int x = 10)
printf(x--, "\n");

o return; та повертати вираз;
одноколірний повертати висловлювання можна використовувати в анулювати функції та повертати вираз
оператори використовуються в інших типах функцій. Функція основний має тип повернення
анулювати і так в основний тільки рівнинна повертати можна використовувати висловлювання. За замовчуванням an icmake
значення виходу сценарію дорівнює 0. Використовуйте вбудовану функцію вихід (див. нижче), щоб уточнити
будь-яке інше вихідне значення.

Be рекомендується: поведінка непотрібних функцій, які не повертають значення, не визначена.

o перерву
Листя та цінності та в той час як твердження, що скасовують умову заяви.

o продовжувати
Продовжується наступною ітерацією a та цінності or в той час як Заява

o вихід (вираз)
Завершує виконання an icmake- сценарій. The вираз необхідно оцінити до an Int
значення, яке стає вихідним значенням сценарію.

ЗАВЕРШЕНИЙ ФУНКЦІЇ


Icmake пропонує наступні попередньо визначені функції, які можна використовувати в будь-якому місці icmake
сценарії. Наступний огляд впорядковано в алфавітному порядку за назвою функції.

o анулювати arghead (рядок h)
Допоміжна функція exec () (див. також нижче за адресою exec ()): визначає "голову аргументу",
використовувати з exec (). За замовчуванням `заголовок аргументу' є порожнім рядком.

o анулювати арґхвіст (рядок t)
Допоміжна функція exec () (див. також нижче за адресою exec ()): визначає "хвіст аргументу",
використовувати з exec (). За замовчуванням "хвіст аргументу" є порожнім рядком.

o Int ascii (рядок s)
Повертає перший символ s як int; наприклад, ascii("A") повертає 65;

o рядок ascii (внутр i)
Повернення i як рядок, наприклад, ASCII(65) повертає рядок "А";

o рядок change_base(рядок файл, рядок нова база)
Змінює базову назву файл, повертає змінене ім’я. наприклад,
change_base("/path/demo.im", "вихід") Умови повернення "/шлях/out.im";

o рядок change_ext(рядок файл, рядок новий наступний)
Змінює розширення файл, повертає змінене ім’я. наприклад,
rss_changeExt("source.cc", "о") Умови повернення "джерело.o";

o рядок зміна_шляху(рядок файл, рядок новий шлях)
Змінює специфікацію шляху файл, повертає змінене ім’я. наприклад,
change_path("tmp/binary", "/ usr / bin") Умови повернення "/usr/bin/binary". Зауважимо, що
/-при необхідності вставляється роздільник.

o рядок chdir(рядок новий каталог)
Змінює робочий каталог сценарію, повертає попередній каталог як абсолютний
шлях

Скористайтесь chdir(".") щоб отримати поточний робочий каталог, chdir("") може бути використаний для
отримати робочий каталог запуску (ця функціональність була порушена у випусках
до 7.00, але зараз працює). Функція завершує роботу
icmake-скрипт, якщо вказано новий каталог не існує

o рядок chdir (внутр перевірка, рядок новий каталог)
Така ж функціональність, що й попередня функція, але за допомогою вказівки контроль as
P_NOCHECK. функція не завершує скрипт. Швидше, це поверне
поточний робочий каталог сценарію.

o cmdhead (рядок h)
Допоміжна функція exec () (див. також нижче за адресою exec ()): Визначає "голову команди", до
використовувати з exec (). За замовчуванням `заголовок команди' є порожнім рядком.

o cmdtail (рядок t)
Допоміжна функція exec () (див. також нижче за адресою exec ()): Визначає "хвіст команди", до
використовувати з exec (). За замовчуванням `хіст команди' є порожнім рядком.

o відлуння (внутр вибір)
Контролює відтворення викликаних програм (та їх аргументів), вказує OFF якщо відлуння
не запитується. За замовчуванням луна (ON) використовується.

o рядок елемент (внутр індекс, список (Або рядок) вар)
Діє ідентично оператору індексу: зверніться до індексу ([]) оператор у
розділ ОПЕРАТОРИ.

o список eval(рядок вул.)
Ця функція діє так само, як і оператор зворотної галочки. Наведений приклад з
Отже, оператор зворотної галочки також можна було б записати так:

printf(eval("ls")); // друкує елементи в поточному
// каталог

o exec(рядок cmd, ...)
Виконує команду з аргументами. Кожен аргумент буде мати префікс arghead()Автора
аргумент і постфіксований від argtail()аргумент 's. Зверніть увагу, що пробіли не вставлені
між arghead()'s зміст, власне аргумент, і argtail()аргумент 's. всі
таким чином модифіковані аргументи об'єднуються, цього разу розділені одинарними пробілами, і
потім cmdhead()Вміст 's вставляється між командою і першим аргументом
(з обох сторін відмежовані одиночними пробілами) і cmdtail()Вміст ' додається
до аргументів (знову-таки, розділених одним пробілом). PATH шукається, щоб знайти
CMD. Повертається 0.

o exec(int checkcmd, рядок cmd, ...)
Така ж функціональність, що й попередня функція, але за допомогою вказівки контроль as
НЕ_ПЕРЕВІРЕНО функція не завершує скрипт. Швидше, це поверне
називається статус виходу команди, або 0x7f00 якщо команда не знайдена.

o виконати (рядок cmd, рядок cmdhd, рядок arghd, ..., рядок argtl, рядок cmdtl)
Такий же, як exec (), але потрібно вказати голову/хвіст команди та аргумент head/tail.

Фактично виконана команда починається з CMD, А потім cmdhd. Далі – серія
наведено нижче аргументів, кожен із яких вкладений arghd та аргтл. Команда завершується на
cmdtl. Повертається 0

o виконати (внутр перевірка, рядок cmd, рядок cmdhd, рядок arghd, ..., рядок argtl,
рядок cmdtl)
Така ж функціональність, що й попередня функція, але за допомогою вказівки контроль as
НЕ_ПЕРЕВІРЕНО функція не завершує скрипт. Швидше, це поверне
називається статус виходу команди, або 0x7f00 якщо команда не знайдена.

o Int існує (рядок файл)
Повертає ненульове значення if файл існує, інакше повертається 0.

o список fgets(рядок файл, список зміщення)
ПРИМІТКА: in icmake версії 8.00.00 було змінено прототип цієї функції
список fgets(рядок файл, Int зміщення) до список fgets(рядок файл, список зміщення).

Наступний рядок, знайдений у зміщенні, що міститься в зсув читається з файл. Передайте а
порожній список до fgets читати файл від її початку.

Він повертає список, що містить як перший елемент вміст рядка для читання
(без \n термінатор рядка), як його другий елемент термінатор рядка `\n"
(якщо зустрічається) і як його третій елемент рядок OK якщо рядок пройшов успішно
читати, FAIL якщо читання з файлу не вдалося. При читанні в EOF порожній список
повернувся. Повернений список може містити додаткові елементи, які є внутрішніми
використаний fgets при читанні наступного рядка.

Щоб прочитати кілька рядків, почніть з передачі порожнього списку як отримує другий аргумент.
Щоб прочитати наступні рядки, передайте попередньо повернутий список до fgets другий
аргумент.

Ось приклад, який показує, як прочитати повний файл:

список ret;
в той час як (1)
{
ret = fgets("ім'я файлу", ret);
якщо (!ret)
break;
процес(ret[0], ret[1]);
}

o Int fprintf(рядок ім'я файлу, ...)
Додає всі (розділені комами) аргументи до файлу ім'я файлу. Повертає кількість
друковані аргументи.

o Int fprintf(рядок ім'я файлу, рядок формат, ...)
Додає всі (розділені комами) аргументи до файлу ім'я файлу. Повертає кількість
друковані аргументи.

If формат містить заповнювачі %1 .. %n виведення відформатовано (див. також
strformat). Зауважте, що в цьому випадку підрахунок аргументів (також) починається після
рядок формату: перший наступний аргумент формат позначається як %1.

o рядок get_base(рядок файл)
Повертає базову назву файл. Базовою назвою є файл без префікса шляху
і без його розширення. Розширення – це вся інформація, починаючи з фіналу
крапка в назві файлу. Якщо кінцева крапка не знайдена, ім’я файлу є базовим ім’ям.
Наприклад, базова назва аб дорівнює a, базова назва abc дорівнює аб, основа
ім'я a/b/c дорівнює c.

o рядок gettch()
Повертає наступну натиснуту клавішу у вигляді рядка (натискати `Enter' не потрібно).

o рядок get_dext(рядок файл)
Повертає розширення файл, включаючи розділову крапку. Розширення це все
інформація, починаючи з останньої крапки назви файлу.

Якщо кінцева крапка не знайдена, повертається порожній рядок.

o список getenv (рядок envvar)
Повертає значення змінної середовища envvar у списку, що містить два елементи:

перший елемент вказує, чи була визначена змінна середовища (value
"1") чи ні (значення "0");
другий елемент вказує значення змінної середовища.

Змінні середовища мають форму змінна=значення, і якщо визначено список
другий елемент містить значення. Якщо значення порожнє, змінна визначена, але
не має асоційованого з ним тексту.

o рядок get_ext(рядок файл)
Повертає розширення файл, за винятком розділової точки. Розширення це все
інформацію, починаючи з останньої крапки в назві файлу.

Якщо кінцева крапка не знайдена, повертається порожній рядок.

o Int getpid()
Повертає ідентифікатор процесу інтерпретатора байтового коду icmake icm-exec.

o рядок отримує ()
Повертає наступний рядок, прочитаний з клавіатури, як a рядок. Лінія введена на
клавіатура повинна закінчуватися клавішею "Enter", яка не зберігається у поверненому
рядок.

o рядок get_path(рядок файл)
Повертає префікс шляху файл. Префікс шляху – це вся інформація до (і
в тому числі) кінцевий роздільник каталогу (який, залежно від операційної
система, пряма або зворотна коса риса).

Якщо шлях не знайдено, повертається порожній рядок.

o Int listfind(список перше, рядок вул.)
Повертає перший індекс у LST де рядок вул знайдено, або -1, якщо LST НЕ
містити вул.

o Int Listlen (список l)
Повертає кількість елементів у список.

o список listunion(список lhs, список праворуч)
Повертає список, що містить об’єднання елементів Л.Ш. та шк.

o список listunion(список перше, рядок вул.)
Повертає список, що містить об’єднання елементів LST та вул.

o список makelist(рядок маска)
Повертає список усіх відповідних файлів маска. Наприклад, makelist("*.c") повертає список
містить усі файли, що закінчуються на .c.

o список makelist(тип, рядок маска)
Те саме, що і попередня функція, але тип елементів каталогу може бути
вказано як його перший аргумент:

значення символу
IS_ALL отримати всі записи каталогу
IS_DIR отримує всі каталоги, включаючи . і ..
IS_FILE отримати список файлів
IS_SUBDIR отримує всі підкаталоги

Зверніть увагу, що візерунок * не буде відповідати прихованим записам під час роботи типу Unix
системи. Використовуйте .* для цього.

o список makelist(рядок маска, новіший, рядок порівняти файл)
Повертає список усіх файлів, які відповідають масці, які новіші за надані
comparefile. Оператор молодший може використовуватися замість новіший. Зверніть увагу на це новіший та
молодший є операторами, а не рядками.

o список makelist([int = IS_FILE,] рядок маска, новіший, рядок порівняти файл)
Те саме, що і попередня функція, але тип може бути зазначено як в список makelist(тип,
рядок маска).

o makelist(рядок маска, старший, рядок порівняти файл)
Дивись вище; повертає список файлів, старіших за файл порівняння.

o makelist(тип, рядок маска, старший, рядок порівняти файл)
Те саме, що і попередня функція, але тип може бути зазначено як в список makelist(тип,
рядок маска).

o Int printf(...)
Показує всі (розділені комами) аргументи на екран (тобто стандартний вихідний потік).
Повертає кількість надрукованих аргументів.

o Int printf(рядок формат, ...)
Показує всі (розділені комами) аргументи на екран (тобто стандартний вихідний потік).
Повертає кількість надрукованих аргументів ( формат рядок вважається одним аргументом).

If формат містить заповнювачі %1 .. %n виведення відформатовано (див. також
strformat).

o Int putenv(рядок envvar)
Додає envvar до поточного (icmake) середовище Використовуйте формат: "VAR=value".
Повертає 0.

o рядок змінити розмір (рядок вул, Int нова довжина) Повертає копію рядка вул, змінений розмір до
нова довжина символів. Якщо нова довжина негативний, то повертається порожній рядок,
if нова довжина перевищує вул довжина, то знову додані символи ініціалізуються
до пробілів.

o Int sizeof(список l)
Не підтримується: використовувати слухати.

o Int sizeoflist(список l)
Не підтримується: використовувати слухати.

o список stat (рядок вхід)
Повернення stat(2) інформація про запис до каталогу запис як список. Повернутий список
має два елементи: елемент 0 є атрибут значення, елемент 1 містить розмір
файл.

Атрибути повертаються як бітові прапори, що складаються з наступного попередньо визначеного
константи:

S_IFCHR S_IFDIR S_IFREG
S_IREAD S_IWRITE S_IEXEC

Див stat(2) сторінка посібника для значень цих констант.

o список статистика (перевірка, рядок вхід)
Те саме, що і попередня функція, але за допомогою вказівки контроль as P_NOCHECK функція
не завершує сценарій. Швидше, повертається stat(2) повертається значення.

o Int strchr(рядок вул, рядок символи)
Повертає перший індекс у вул де будь-який із персонажів у танки знайдено, або -1
if вул не містить жодного з символів у танки.

o Int strlen(рядок вул.)
Повертає кількість символів у вул (не враховуючи остаточних 0).

o Int strfind(рядок копа сіна, рядок голка)
Повертає індекс у копиця сіна де голка знайдено, або -1, якщо голка не міститься
in копиця сіна.
це функція було званий strstr () in версії перед тим 7.00.

o Int strformat(рядок формат,...)
Повертає відформатований рядок із використанням заповнювачів %1 .. %2 для адресації аргументів
наступний формат.
приклад:

void main ()
{
int 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(рядок вул, рядок роздільники)
Повертає список, що містить усі підрядки вул розділені одним або кількома
(послідовні) символи в сепаратори. Наприклад, strtok("привіт icmake's+world", " +")
повертає список, що містить три рядки "Здравствуйте", "icmake" та "світ".

o рядок strupr(рядок s)
Повертає копію у верхньому регістрі s.

o рядок substr(рядок Текст, Int зміщення, Int рахувати)
Повертає підрядок текст, починаючи з зсув, складається з вважати символів. Якщо
зсув перевищує (або дорівнює) розміру рядка або якщо вважати <= 0, потім порожній рядок
повертається. Якщо зсув менше 0, то використовується 0.

o Int система (рядок команда)
Виконує команда. Повернене значення вказує вихідне значення виконаної команди. The
рядок команда може містити символи переспрямування та/або конвейерів.

o Int система (внутр перевірка, рядок команда)
Така ж функціональність, що й попередня функція, але за допомогою вказівки контроль as
НЕ_ПЕРЕВІРЕНО функція не завершує скрипт. Швидше, це поверне
називається статус виходу команди, або 0x7f00 якщо команда не знайдена.

o рядок обрізати (рядок s)
Повертає копію s без початкових і кінцевих пробілів.

o рядок trimleft (рядок вул.)
Повертає копію s без провідних пробілів.

o рядок обрізати (рядок s)
Повертає копію s без залишкових пробілів.

USER ВИЗНАЧЕНИЙ ФУНКЦІЇ


анулювати основний

Icmake скрипти повинні мати визначену користувачем функцію основний. Функція основний має
три необов'язкові параметри, які можна опустити з останнього (envp) до першого
(argc), як у C. Його повний прототип (примітка: анулювати тип повернення):

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

In main (),

o argc представляє кількість елементів у argv;

o argv містить аргументи, при цьому елемент 0 дорівнює імені .bim
файл;

o envp містить змінні 'середовища'. Функція слухати може бути використана для
визначити кількість його елементів. Елементи в envp мають форму
змінна=значення. Як варіант, функція getenv можна використовувати для отримання a
конкретна змінна середовища негайно. приклад:

void main(int argc, list argv)
{
список для компіляції;
int idx;

якщо (argc == 1)
використання(елемент(0, argv));

if (toCompile = altered("*.cc"))
{
for (idx = length(toCompile); idx--; )
compile(елемент(idx, toCompile));

if (getenv("dryrun")[0] == "0")
зв'язування(елемент(2, argv));
}
}

Ініціалізувавши всі глобальні змінні в порядку їх визначень основний називається
icmakeСистема підтримки під час виконання для виконання додаткових завдань.

Додатково певний користувач Функції

Можуть бути визначені додаткові функції. Після визначення ці функції можна викликати. Вперед
посилання на змінні або функції не підтримується, але викликається рекурсивно
функції є. Оскільки оголошення функцій не підтримуються, непряма рекурсія не підтримується
також підтримується.

Визначені користувачем функції повинні мати такі елементи:

o Тип повернення функції, який має бути одним із порожнеча, int, рядок or список. Там
не є типом за замовчуванням.

o Ім'я функції, наприклад, скласти.

o Список параметрів, що визначає нуль або більше параметрів, розділених комами. Параметри
самі складаються з імені типу (int, рядокабо список), за яким слідує
ідентифікатор параметра. наприклад, (рядок вихідний файл, рядок джерело).

o А тіло оточені парою фігурних дужок ({ та }).

Тіла функцій можуть містити (необов'язково ініціалізовані) визначення змінних. Змінна
визначення починаються з назви типу, за якими слідує одна або кілька, розділених комами (за бажанням
ініціалізовані) ідентифікатори змінних. Якщо змінна не ініціалізована явно, це так
ініціалізовано за замовчуванням. За замовчуванням an Int змінна ініціалізована в 0, a рядок is
ініціалізується порожнім рядком ("") І список ініціалізується списком з нульових елементів.

На додаток до визначень змінних, тіла можуть містити нуль або більше операторів (див.
розділ ПОТІК КОНТРОЛЬ). Зауважте, що змінні можуть бути визначені (і за бажанням ініціалізовані)
будь-де всередині функцій, а також у якщо, та цінності та в той час як заяви.

Поведінка icmake-скрипти, що використовують функції non-void, які не повертають значення
визначений.

Використовуйте icmake онлайн за допомогою служб onworks.net


Безкоштовні сервери та робочі станції

Завантажте програми для Windows і Linux

Команди Linux

Ad