Angielskifrancuskihiszpański

Ad


Ulubiona usługa OnWorks

icmake - Online w chmurze

Uruchom icmake w bezpłatnym dostawcy hostingu OnWorks w systemie Ubuntu Online, Fedora Online, emulatorze online systemu Windows lub emulatorze online systemu MAC OS

To jest polecenie icmake, które można uruchomić u dostawcy bezpłatnego hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS

PROGRAM:

IMIĘ


icmake — konserwacja programu (robić) narzędzie wykorzystujące a C-jak gramatyka

STRESZCZENIE


icmake [opcje] źródło[.im] [dest[.bim]] [-- [argumenty]]

icmun plik bim

OPIS


Icmake(1) może być stosowany jako alternatywa dla robić(1). W standardowym trybie pracy, to
wywołuje następujące programy:

o icm-str do wstępnego przetworzenia pliku icmake

o icm-komp do kodu bajtowego skompiluj plik icmake s

o icm-exec aby wykonać plik z kodem bajtowym

Icmake pozwala programistom używać języka programowania (bardzo przypominającego dobrze znany
C-język programowania) w celu zdefiniowania działań związanych z (złożonym) programem
konserwacja. Dla tego, icmake oferuje różne operatory specjalne, a także zestaw wsparcia
funkcje, które okazały się przydatne w utrzymaniu programu.

Program icmun(1) można wykorzystać do dezasemblacji skompilowanego pliku kodu bajtowego (.bim). Icmun
jest używany głównie do ilustracji, edukacji i debugowania.

Tradycyjne narzędzia make rekompilują źródła po modyfikacji plików nagłówkowych. w
kontekst C + + rozwój programu jest to często zły pomysł, ponieważ dodanie nowego członka do a
class zwykle nie wymaga ponownej kompilacji źródeł klasy. Aby poradzić sobie z klasą
Zależności icmbuld(1) może dokonać kontroli ZAJĘCIA pliki, których można użyć do zdefiniowania zależności
wśród klas. Domyślnie zależności klas nie są interpretowane. Patrz icmconf(7)
strona podręcznika, aby uzyskać dalsze szczegóły.

OPCJE


Icmake używa następujących plików i opcji:

o źródło: icmake plik źródłowy skryptu (domyślne rozszerzenie: .im).

o przeznaczenie: binarny icmake plik skryptu (domyślnie: `źródło'.bim, zwany `plikiem .bim'
poniżej).

o --: icmake separator argumentów oddzielający icmake argumenty z przekazanych argumentów
do pliku .bim filenl() args: następujące argumenty -- są przekazywane do pliku .bim
w obecnym stanie i są dostępne w witrynie podstęp argumentacja parametr zdefiniowany jako icmake
scenariusz główny drugi parametr funkcji (patrz poniżej w sekcji USER ZDEFINIOWANE
FUNKCJE). W przypadku niektórych opcji (patrz poniżej) plik -- separator nie jest wymagany.

Icmake obsługuje różne opcje opisane poniżej. The -h opcja zastępuje wszystkie inne
opcje, -a opcja zastępuje wszystkie inne opcje z wyjątkiem -h. Z pozostałej akcji
opcje (-B, -C, -mi, -ja, -p i -t) można określić tylko jeden:

o -a
pokaż informacje o icmake, unieważniony przez -h;

o -b
wycofane: zamiast tego użyj opcji -e;

o -c
dotychczasowy icmake plik źródłowy jest kompilowany i generuje plik .bim;

o -e
wykonać icmake plik .bim, podany jako icmakepierwszy argument pliku. Wszelkie dodatkowe
argumenty są przekazywane do pliku .bim w niezmienionej postaci oraz -- nie należy określać;

o -F
nazwy plików i flagi oraz przegląd wszystkich akcji, które należy wykonać
icmake są wyświetlane na standardowym strumieniu wyjściowym;

o -h
podaj informacje o użytkowaniu i zakończ icmake;

o -i
pierwszym argumentem jest icmake źródłowym, domyślnym plikiem binarnym jest
zbudowany, jeśli to konieczne. Wszelkie dodatkowe argumenty przekazywane są do pliku .bim
tak jak jest, i -- nie należy określać;

o -p
dotychczasowy icmake plik źródłowy jest tylko wstępnie przetwarzany, a wstępnie przetworzony plik jest zapisywany
do icmakedrugi argument pliku (domyślnie `źródło'.pim);

o -q
zignorowane, zostaną usunięte w przyszłości icmake wersja;

o -t
następujący argument -t to nazwa tymczasowego pliku .bim, który jest usuwany
po icmakewezwanie. Gdy . jest określony jako nazwa tymczasowego pliku .bim
następnie domyślny katalog tymczasowy, po którym następuje icmakeidentyfikator procesu, po którym następuje
bim Jest używane.

Po nazwie tymczasowego pliku .bim znajduje się nazwa pliku icmake skrypt źródłowy
należy określić. Wszelkie dodatkowe argumenty są przekazywane do pliku .bim w niezmienionej postaci oraz
-- nie należy określać; Po ustawieniu flagi wykonywalnej pliku skryptu źródłowego
(chmod +x scenariusz) i nadanie mu początkowej linii takiej jak ta:

#!/usr/bin/icmake -t.

dotychczasowy icmake skrypt można bezpośrednio wywołać:

skrypt arg1 arg2

w którym to przypadku icmake scenariusz „skrypt” jest wykonywany podczas odbierania
argumenty scenariusz argument1 argument2.

o -T
w tej opcji należy podać nazwę katalogu, w którym przechowywane są dane
pliki tymczasowe. Np. podczas kompilacji pliku icmake skrypt, wynik icmake'S
preprocesor to plik tymczasowy, który jest usuwany przy wyjściu. Domyślnie / Tmp jest używany,
chyba że / Tmp nie jest katalogiem do zapisu, w tym przypadku bieżącym użytkownikiem $ HOME
używany jest katalog. Niejawne nazwy plików tymczasowych zawsze zaczynają się od identyfikatora procesu
obecny icmake proces.

o -v
pokaz icmakenumer wersji i koniec icmake, unieważniony przez -h

Icmun:

plik bim: binarny icmake plik skryptu.

PREPROCESOR DYREKTYWY


Dostępne są następujące dyrektywy preprocesora:

o komentarz:
standard C komentarz (wszystko pomiędzy /* i */), a także komentarz do końca linii (all
następująca zawartość wiersza //) są ignorowane.

o Uruchamianie powłoki: Pierwsza linia pliku icmake-script może zaczynać się od #!ścieżka, Gdzie
ścieżka określa bezwzględną lokalizację icmake program. Tworząc scenariusz
wykonywalny, można go wywołać bez jawnego wywoływania icmake.

Np. jeśli pierwsza linia (wykonywalnego) pliku icmake „icm” (bez rozszerzenia)
zawiera

#!/usr/bin/icmake -i

następnie icm może zostać wydane jako polecenie i w ten sposób wykonane

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

Alternatywnie

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

mogą zostać wykorzystane, co skutkuje wykonaniem

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

W tym przypadku plik binarny jest usuwany przy wyjściu.

o #zawierać "Nazwa pliku"
Plik filename znajduje się w miejscu, w którym znajduje się dyrektywa

o #zawierać
Plik filename jest uwzględniony w lokalizacji #zawierać dyrektywa; filename
jest przeszukiwany w katalogach oddzielonych dwukropkami określonych przez IM środowisko
zmienny. Pierwsze wystąpienie filename w katalogach określonych przez IM
używana jest zmienna środowiskowa.

o #definiować identyfikator [definicja]
Tekst identyfikator zostanie zastąpiony przez definicja. Definicja może zawierać
odniesienia do już zdefiniowanych identyfikatorów, przy użyciu metody ${identyfikator} format. Jeśli
${identyfikator} nie został (jeszcze) zdefiniowany, tekst ${identyfikator} jest dosłownie zachowany.
Aby zapobiec nieskończonej rekurencji co najwyżej 100 ${identyfikator} zamienniki są dozwolone.

Definicje są kontynuowane w następnym wierszu, jeśli ostatnim znakiem w wierszu jest a
ukośnik wsteczny (\). (co nie jest zawarte w definicji). Preprocesor
łączy ciągi w cudzysłowie, a ciągi w cudzysłowie nie mogą obejmować wielu ciągów
linie. Wiele spacji (poza ciągami znaków w cudzysłowie) w definicjach to:
skurczone do pojedynczego pustego miejsca.

Definicja po #zdefiniuj identyfikator jest opcjonalny. Jeśli zostanie pominięty,
makro jest zdefiniowane, więc można go używać w #if(n)def dyrektyw (patrz poniżej), ale oni
nie są zastępowane żadnym tekstem w icmake wypowiedzi kodowe.

o #ifdef identyfikator
Jeśli identyfikator makro zostało zdefiniowane w kolejnym bloku kodu (aż do dopasowania #else
or #endif dyrektywa została przeczytana) jest kompilowany bajtowo. W przeciwnym razie blok kodu jest
ignorowane.

o #ifndef identyfikator
Jeśli identyfikator makro było nie zdefiniował następny blok kodu (aż do dopasowania
#else or #endif wykryto dyrektywę) jest kompilowany bajtowo. W przeciwnym razie blok
kod jest ignorowany.

o #else
Kończy się #ifdef i #ifndef dyrektywy, cofając decyzję o przyjęciu dot
poniższy kod. Tylko jeden #else dyrektywa może być powiązana z #if(n)def
dyrektyw.

o #endif
Kończy blok preprocesora, zaczynając od dopasowania #ifdef, #ifndef or #else
dyrektywa. ten #endif katalog i jego dopasowanie #if(n)def dyrektywa musi być
określone w tym samym pliku.

o #niedef identyfikator
Usunąć identyfikator ze zbioru zdefiniowanych symboli. Nie ma to wpływu na
specyfikacja wszelkich wcześniej zdefiniowanych symboli, w których identyfikator definicja
był użyty. Jeśli identyfikator nie został zdefiniowany. Wyświetlane jest ostrzeżenie.

DATA TYPY


Icmake obsługuje następujące typy danych:

o ASCII charakter stały
Stałe znakowe ASCII składają się z jednego znaku otoczonego pojedynczym lub podwójnym
cytaty. Pojedyncze znaki (np. 'a') reprezentują samą postać. Standard
sekwencje ucieczki (np. '\N') są obsługiwane i reprezentują ich standardową konwersję
wartość (np. '\N' reprezentuje wartość ascii 10 (dziesiętna)). Niestandardowa ucieczka
sekwencje (np. '\X') reprezentują znak ascii następujący po znaku ucieczki
(więc '\X' równa się 'X'). Reprezentują sekwencje ucieczki składające się z trzech cyfr ósemkowych
znak ascii odpowiadający wartości ósemkowej modulo 256 (np. „\123”).
Reprezentują sekwencje ucieczki składające się z x, po którym następują dwie cyfry szesnastkowe
znak ascii odpowiadający wartości szesnastkowej (np. „\xa4”).

o int
Wartości integralne, począwszy od -0x8000 przez 0x7fff. int mogą być stałe
określone jako liczby dziesiętne (zaczynające się od cyfr od 1 do 9), liczby ósemkowe
(zaczynając od 0, po którym następuje jedna lub więcej cyfr ósemkowych) liczby szesnastkowe
(zaczynając od 0x, po którym następuje jedna lub więcej cyfr szesnastkowych) lub as ASCII
stałe znakowe.

o ciąg
Zmienne tekstowe. Stałe łańcuchowe są rozdzielane podwójnymi cudzysłowami. Wiele ciągów
stałe mogą być łączone, ale pojedyncza stała łańcuchowa nie może obejmować wielu
linie. Stałe łańcuchowe oddzielone wyłącznie białymi znakami (tzn. odstępami, znakami nowej linii,
komentarz) są łączone i reprezentują jedną stałą łańcuchową. Aby wskazać
koniec linii w stałej łańcuchowej użyj metody \n sekwencja ewakuacyjna.

Można także stosować stałe znakowe ASCII ujęte w cudzysłów
wyrażenia arytmetyczne, jeśli jednym z operandów jest an int. Pojedynczy znak
ciągła stała musi być stałą i nie może być a ciąg zmienna.

Podobnie można stosować stałe znakowe ASCII ujęte w pojedyncze cudzysłowy
sytuacje, w których oczekiwany jest argument łańcuchowy.

o podstęp
Struktura danych zawierająca szereg indywidualnie dostępnych ciąg wartości. Kiedy
lista zawiera elementy, jej pierwszy element jest oznaczony indeksem 0.

o unieważnić
Używane z definicjami funkcji, aby wskazać, że funkcja nie zwraca a
wartość.

Zmienne można definiować na poziomie globalnym, jak również na dowolnym poziomie lokalnym wewnątrz
Funkcje. Gdy zdefiniowano funkcje wewnętrzne, standard C zasady dotyczące zakresu i widoczności
stosować. Np. zmienne lokalne mogą być używane tylko samodzielnie lub w przypadku bardziej głęboko zagnieżdżonych
bloków, ich widoczność jest maskowana w głębiej zagnieżdżonych blokach poprzez identyczne zdefiniowanie
nazwaną zmienną wewnątrz tych głębiej zagnieżdżonych bloków. Zmienne są silnie typowane i
nie może mieć typu unieważnić.

Zmienne mogą być inicjowane podczas ich definiowania. Inicjalizacja to wyrażenia
może korzystać z funkcji zdefiniowanych wcześniej lub przez użytkownika, wartości stałych i wartości zmiennych, które są
widoczne w punkcie definicji.

PREDEFINIOWANE STAŁE


Następujące stałe są predefiniowane przez icmake. Wszystkie są stałe int wartości:

────────────────────────────────.
wartość symbolu przeznaczona dla
────────────────────────────────.
Lista zakupów O_ALL 8
Lista utworów O_DIR 2
O_FILE 1 lista rzeczy do zrobienia
Lista make-up O_SUBDIR 4
────────────────────────────────.
WYŁ. 0 echo
WŁ. 1 echo
────────────────────────────────.
P_CHECK 0 wywołań systemowych
P_NOCHECK 1 wywołania systemowe
────────────────────────────────.
S_IEXEC 32 statystyki
S_IFCHR 1 statystyka
Statystyka S_IFDIR 2
S_IFREG 4 statystyka
S_IREAD 8 statystyk
S_IWRITE 16 statystyk
────────────────────────────────.

Następujące stałe zależą od architektury:

────────────────────────────────────────────────── ────────────
symbol 1, jeśli jest zdefiniowany na platformie, w przeciwnym razie 0
────────────────────────────────────────────────── ────────────
unix Unix, zwykle z kompilatorem gcc GNU
Alternatywnie może być dostępny UNIX
Linux x86 z systemem Linux (zwykle z gcc)
Alternatywnie może być dostępny system LINUX
M_SYSV, M_UNIX x86 z systemem SCO/Unix
_POSIX _SOURCE Unix z kompilatorem zgodnym z Posix
__hpux HP-UX z natywnym kompilatorem HP
────────────────────────────────────────────────── ────────────

OPERATORZY


wpisane typu int operand(y):

Wszystkie kategorie C dostępne są operatory (z wyjątkiem operatorów wskaźników, np icmake nie wspiera
wskazówki). Działają jak ich C-odpowiedniki języków programowania.

typu string operand(y):

W razie zamówieenia projektu ciąg typu zmienne i/lub stałe dostępne są następujące operatory (a i b
reprezentować ciąg zmienne lub stałe):

o a + b: zwraca nowy ciąg wartość zawierająca konkatenację ciąg wartości a
i b, Należy pamiętać, że ciąg stałe mogą być bezpośrednio łączone (bez użycia metody +
operator), np. następujące dwie linie definiują ciąg "dzień dobry świat":

"Witaj świecie"
„cześć” + „świat”

o a += b: a musi być ciąg zmienna, do której ciąg zmienna lub wartość b is
dołączone.

o porównania ciągów: operatory == != <= >= < > != i == mogą być stosowane do ciąg
wartości lub zmienne, zwracając 1, jeśli porównanie się powiedzie, w przeciwnym razie 0.
W porównaniu rozróżniana jest wielkość liter i następuje zgodna z zdefiniowaną kolejnością lub znakami
ASCII zestaw znaków.

o !a: wartość logiczna ! Operator (nie) zwraca 1, jeśli ciąg a jest pusty, w przeciwnym razie wynosi 0
zwrócony.

o a młodszy b, a nowsza b: zwraca 1, jeśli plik a jest nowszy niż plik b. Np,
„źródło.cc” nowsza „źródło.o”. Pliki a i b nie muszą istnieć: jeśli oba nie istnieją
istnieje. Zwracane jest 0; Jeśli b nie istnieje, zwracana jest wartość 1; Jeśli a nie istnieje 0 jest
zwrócony; jeśli są tak samo stare, zwracane jest 0. (t istnieje() predefiniowana funkcja
(patrz poniżej, sekcja PREDEFINIOWANE FUNKCJE) można wykorzystać do jawnego sprawdzenia, czy a
plik istnieje).

o a starszych b: zmienia 1, jeśli plik a jest starszy niż plik b. Np, „libprog.a” starszych
„źródło.o”. Pliki a i b nie muszą istnieć: jeśli oba nie istnieją, 0 wynosi
zwrócony; Jeśli a nie istnieje, zwracana jest wartość 1; Jeśli b nie istnieje Zwracane jest 0; Jeśli
są tak samo stare. Zwracane jest 0.

o []: operator indeksu pobiera znak ze zmiennej łańcuchowej lub stałej: it
zwraca ciąg jako wartość. Dlatego poniższa instrukcja kompiluje się poprawnie:

// załóżmy, że str1 i str2 są ciągami znaków
str1 = str2[3];

ale następująca instrukcja nie zostanie skompilowana:

str2[3] = "a";

W przypadku podania nieprawidłowej wartości indeksu zwracany jest pusty ciąg.

o Operator „cofnięcia” (`sznurek cmd`)
Ciąg znaków umieszczony pomiędzy dwoma backtickami jest wykonywany przez metodę popować(3) funkcja. The
standardowe wyjście generowane przez polecenie przechowywane w argumencie łańcuchowym is
zwrócone jako lista. Pusta lista wskazuje, że polecenie nie mogło zostać wykonane.
Polecenie, które można wykonać, ale nie dało żadnego wyniku, zwraca listę
zawierający jeden pusty element. Standardowy wynik strumienia błędów polecenia nie jest
zbierane przez operatora backtick. Jednak standardowe przekierowanie powłoki może być
używany do zbierania danych wyjściowych standardowego strumienia błędów. Przykład:

printf(`"ls"`); // wypisuje elementy
// bieżący katalog

Predefiniowana funkcja ewaluacja(ciąg cmd) zachowuje się dokładnie tak samo jak backtick
operator: są to synonimy.

wpisane na liście operand(y):

W razie zamówieenia projektu podstęp typu zmienne i/lub wartości dostępne są następujące operatory:

o a + b: zwraca nowy podstęp wartość zawierająca konkatenację podstęp wartości a i
b. Jest nie operacja na zestawie: jeśli element pojawia się zarówno w a oraz w b, oni będą
pojawi się dwukrotnie na wynikowej liście (dodawanie zestawu zapewnia wbudowana funkcja
funkcjonować spotkanie).

o a - b: zwraca nowy podstęp wartość zawierająca elementy w a których nie ma
in b, To is operacja na różnicy zestawów: zwrócona lista zawiera wszystkie elementy
in a które nie są elementami b.

o a += b: elementy w b są dodawane do elementów w a, który musi być podstęp
zmienny. To jest nie ustalona operacja.

o a -= b: elementy w b są usuwane z elementów w a, który musi być podstęp
zmienny. Ten is operacja na zestawie: wszystkie elementy a które znajdują się w b jest
usunięte z a.

o porównania równości list: operatory != i == mogą być stosowane do podstęp wartości lub
zmienne. Operator == zwraca 1, jeśli obie listy mają identyczny element po elemencie
elementów, w przeciwnym razie zwracane jest 0. Operator != odwraca wynik ==.

o !a: wartość logiczna ! operator zwraca 1, jeśli podstęp a jest pusty, w przeciwnym razie wynosi 0
zwrócony.

o []: operator indeksu pobiera element listy ze zmiennej listowej: zwraca a
ciąg jako wartość. Dlatego poniższa instrukcja kompiluje się poprawnie:

// załóżmy, że lst jest listą, str jest ciągiem znaków
str = lst[3];

ale następująca instrukcja nie zostanie skompilowana:

lst[3] = str;

W przypadku podania nieprawidłowej wartości indeksu zwracany jest pusty ciąg.

Odlew:

Odlewy typu można wykonać przy użyciu standardu C operator obsady do rzutu:

o Ciągi na inty i odwrotnie ((int)"123", (sznurek)55)

o Ciągi do list (podstęp LST = (lista) „cześć”)

FLOW CONTROL


Icmake oferuje następujący podzbiór Cwypowiedzi. Można ich używać jak w C
język programowania.

o wyrażenie ;
Instrukcja wyrażenia zwykłego;

o Instrukcja złożona
Zmienne dowolnego typu mogą być definiowane i inicjowane w dowolnym miejscu wewnątrz dowolnego związku
oświadczenie. ten widoczność zmiennej rozpoczyna się w punkcie jej definicji.

o if (stan : schorzenie) oświadczenie
Wewnątrz warunku można zdefiniować i zainicjować zmienną. Np,

if (string str = getText())
proces(str);

W tym przykładzie wygląda tak nie jest wywoływana jeśli getText () zwraca pusty ciąg. The
zmienna str nie istnieje ani przed, ani po if komunikat.

o if (stan : schorzenie) oświadczenie więcej oświadczenie
Podobnie jak w poprzednim stwierdzeniu, wewnątrz warunku można zdefiniować zmienną i
zainicjowany.

o dla (w tym; stan: schorzenie; przyrost) oświadczenie
Zmienne (jednego typu) mogą być inicjowane (i opcjonalnie definiowane) w pliku
startowych Sekcja. ten startowych, warunek i przyrost sekcje mogą pozostać puste. The
pusta sekcja warunku jest interpretowana jako „zawsze”. prawdziwy".

o Podczas (stan : schorzenie) oświadczenie
Wewnątrz warunku można zdefiniować i zainicjować zmienną.
Uzupełniające do ... chwila() oświadczenie nie jest dostępne. Należy pamiętać, że zdefiniowanie a
zmiennej, użycie wyrażenia inicjującego oznacza, że ​​inicjalizacja
wyrażenie jest wykonywane przy każdej iteracji Podczas oświadczenie. Zatem co następuje
instrukcja nigdy się nie zakończy i wyświetli niekończący się strumień wartości 10:

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

o powrotu;, powrót wyrażenie;
Równina powrót można używać instrukcji w unieważnić funkcje i powrót wyrażenie
instrukcje są używane w funkcjach innego typu. Funkcja główny ma typ zwracany
unieważnić i tak w główny tylko zwykły powrót można używać stwierdzeń. Domyślnie icmake
wartość wyjściowa skryptu wynosi 0. Użyj wbudowanej funkcji wyjście (patrz poniżej), aby określić
jakakolwiek inna wartość wyjściowa.

Be rozmyślny: zachowanie funkcji niepustych i nie zwracających wartości jest niezdefiniowane.

o złamać
Liście dla i Podczas oświadczenia, unieważniając warunek oświadczenia.

o kontynuować
Kontynuuje następną iterację a dla or Podczas komunikat.

o wyjście (wyrażenie)
Kończy wykonywanie pliku icmake-scenariusz. The wyrażenie musi ocenić do int
wartość, która staje się wartością wyjściową skryptu.

PREDEFINIOWANE FUNKCJE


Icmake oferuje następujące predefiniowane funkcje, z których można korzystać w dowolnym miejscu icmake
skrypty. Poniższy przegląd jest uporządkowany alfabetycznie według nazw funkcji.

o unieważnić arghead(ciąg h)
Funkcja pomocnicza Exec () (patrz także poniżej pod adresem Exec ()): definiuje „głowę argumentu”,
do użycia z Exec (). Domyślnie „głowa argumentu” jest pustym ciągiem znaków.

o unieważnić ogon (strunowy t)
Funkcja pomocnicza Exec () (patrz także poniżej pod adresem Exec ()): definiuje „koniec argumentu”,
do użycia z Exec (). Domyślnie „koniec argumentu” jest pustym ciągiem znaków.

o int ascii(ciąg s)
Zwraca pierwszy znak s jako int; np, ascii("A") zwraca 65;

o ciąg ascii (int i)
Returns i jako ciąg znaków, np. Ascii(65) zwraca ciąg "A";

o ciąg zmiana_bazy(string file, ciąg nowa baza)
Zmienia nazwę bazową filet, zwraca zmienioną nazwę. Np,
zmiana_base("/ścieżka/demo.im", "na zewnątrz") powraca „/path/out.im”;

o ciąg zmień_ext(string file, ciąg nowynastępny)
Zmienia rozszerzenie filet, zwraca zmienioną nazwę. Np,
rss_changeExt("źródło.cc", „o”) powraca „źródło.o”;

o ciąg ścieżka_zmiany (string file, ciąg Nowa ścieżka)
Zmienia specyfikację ścieżki filet, zwraca zmienioną nazwę. Np,
zmiana_ścieżki("tmp/binarny", "/ usr / bin") powraca „/usr/bin/binarny”. Zauważ, że
/-separator jest wstawiany, jeśli jest to wymagane.

o ciąg chdir(ciąg nowykatalog)
Zmienia katalog roboczy skryptu, zwraca poprzedni katalog jako bezwzględny
ścieżka.

Zastosowanie chdir(."") aby uzyskać bieżący katalog roboczy, chdir("") może być przyzwyczajony do
uzyskaj startowy katalog roboczy (ta funkcja była uszkodzona w wydaniach
wcześniej niż o 7.00, ale już działa). Funkcja kończy
icmake-script, jeśli określono nowydir nie istnieje.

o ciąg chdir (int kontrola, ciąg nowykatalog)
Ta sama funkcjonalność co poprzednia funkcja, ale poprzez określenie kontrola as
P_NOCHECK. funkcja nie zakończy skryptu. Raczej zwróci
bieżący katalog roboczy skryptu.

o cmdhead(ciąg h)
Funkcja pomocnicza Exec () (patrz także poniżej pod adresem Exec ()): Definiuje „nagłówek polecenia”, do
być używany z Exec (). Domyślnie „nagłówek polecenia” jest pustym ciągiem znaków.

o cmdtail(ciąg t)
Funkcja pomocnicza Exec () (patrz także poniżej pod adresem Exec ()): Definiuje „koniec polecenia”, do
być używany z Exec (). Domyślnie „koniec polecenia” jest pustym ciągiem znaków.

o echo (wew optować)
Kontroluje powtarzanie wywołanych programów (i ich argumentów), określ OFF jeśli odbija się echem
nie jest wymagane. Domyślnie echo(WŁ.) Jest używane.

o ciąg element (int indeks, podstęp (lub strunowy) var)
Działa identycznie jak operator indeksu: patrz indeks ([]) operator w
Sekcja OPERATORZY.

o podstęp ewaluacja(ciąg str)
Funkcja ta działa identycznie jak operator backtick. Przykład podany z
operator backtick mógł zatem również zostać zapisany w ten sposób:

printf(eval("ls")); // drukuje elementy w bieżącym pliku
// katalog

o exec(string cmd, ...)
Wykonuje polecenie z argumentami. Każdy argument będzie poprzedzony prefiksem argument()'S
argument i postfiks przez ogon()argument. Należy pamiętać, że nie są wstawiane żadne spacje
pomiędzy argument()treść, właściwy argument i ogon()argument. Wszystko
w ten sposób zmodyfikowane argumenty są łączone, tym razem oddzielone pojedynczymi spacjami, oraz
następnie cmdhead()zawartość jest wstawiana pomiędzy poleceniem a pierwszym argumentem
(po obu stronach oddzielonych pojedynczymi spacjami) i cmdtail()zawartość jest dołączona
do argumentów (ponownie oddzielonych pojedynczym odstępem). PATH jest wyszukiwane w celu zlokalizowania
cmd. Zwracane jest 0.

o wykonawca (int sprawdźcmd, ciąg cmd, ...)
Ta sama funkcjonalność co poprzednia funkcja, ale poprzez określenie kontrola as
NIESPRAWDZONE funkcja nie zakończy skryptu. Raczej zwróci
nazywany statusem wyjścia polecenia, lub 0x7f00 jeśli polecenie nie zostało znalezione.

o wykonaj (ciąg cmd, ciąg cmdhd, ciąg arghd, ... ciąg argtl, ciąg cmdtl)
Taki sam jak Exec (), ale należy określić początek/koniec polecenia i początek/koniec argumentu.

Właściwie wykonane polecenie zaczyna się od cmd, śledzony przez cmdhd. Dalej jest seria
Poniżej znajduje się lista argumentów, każdy otoczony przez arghd i argtl. Polecenie kończy się znakiem
cmdtl. Zwracane jest 0

o wykonać (int kontrola, ciąg cmd, ciąg cmdhd, ciąg arghd, ... ciąg argtl,
ciąg cmdtl)
Ta sama funkcjonalność co poprzednia funkcja, ale poprzez określenie kontrola as
NIESPRAWDZONE funkcja nie zakończy skryptu. Raczej zwróci
nazywany statusem wyjścia polecenia, lub 0x7f00 jeśli polecenie nie zostało znalezione.

o int istnieje (ciąg plik)
Zwraca wartość różną od zera, jeśli filet istnieje, w przeciwnym razie zwracane jest 0.

o podstęp fgets (string file, podstęp zrównoważyć)
UWAGA: in icmake wersja 8.00.00, z której zmieniono prototyp tej funkcji
podstęp fgets (string file, int zrównoważyć) do podstęp fgets (string file, podstęp zrównoważyć).

Następna linia znaleziona w przesunięciu zawartym w offset jest czytany z filet. Przekaż
pusta lista do fgets czytać filet od samego początku.

Zwraca listę zawierającą jako pierwszy element zawartość przeczytanej linii
(bez \n terminator linii), jako drugi element terminatora linii `\n"
(jeśli zostanie napotkany), a jako trzeci element string OK jeśli linia została pomyślnie wykonana
czytać, FAIL jeśli odczyt z pliku nie powiódł się. Podczas czytania w EOF lista jest pusta
zwrócony. Zwrócona lista może zawierać dodatkowe elementy, które znajdują się wewnętrznie
wykorzystane przez fgets podczas czytania kolejnego wiersza.

Aby przeczytać wiele wierszy, zacznij od przekazania pustej listy jako dostaje drugi argument.
Aby przeczytać kolejne linie, przekaż poprzednio zwróconą listę do fgetsa Dopiero
argumenty.

Oto przykład pokazujący, jak odczytać cały plik:

lista ret;
while (1)
{
ret = fgets("nazwa pliku", ret);
jeśli (!ret)
break;
proces(ret[0], ret[1]);
}

o int fprintf(ciąg Nazwa pliku, ...)
Dołącza wszystkie argumenty (oddzielone przecinkami) do pliku filename. Zwraca liczbę
drukowane argumenty.

o int fprintf(ciąg Nazwa pliku, ciąg format, ...)
Dołącza wszystkie argumenty (oddzielone przecinkami) do pliku filename. Zwraca liczbę
drukowane argumenty.

If format zawiera symbole zastępcze %1 .. %n wyjście jest sformatowane (patrz także
formatowanie). Zauważ, że w tym przypadku liczenie argumentów (również) rozpoczyna się poza
ciąg formatujący: pierwszy następujący argument format określa się jako %1.

o ciąg get_base(string plik)
Zwraca nazwę bazową filet. Podstawową nazwą jest plik bez przedrostka ścieżki
i bez jego przedłużenia. Rozszerzenie to wszystkie informacje, począwszy od finału
kropka w nazwie pliku. Jeśli nie zostanie znaleziona ostatnia kropka, nazwą pliku będzie nazwa podstawowa.
Np. nazwa podstawowa ab równa się a, podstawowa nazwa ABC równa się ab, baza
Nazwa ABC równa się c.

o ciąg dostać()
Zwraca następny naciśnięty klawisz jako ciąg znaków (naciśnięcie klawisza „Enter” nie jest wymagane).

o ciąg get_dext(string plik)
Zwraca rozszerzenie filet, łącznie z kropką oddzielającą. Rozszerzenie to wszystko
informacje zaczynające się od ostatniej kropki w nazwie pliku.

Jeśli nie zostanie znaleziona ostatnia kropka, zwracany jest pusty ciąg.

o podstęp getenv(string zmienna środowiskowa)
Zwraca wartość zmiennej środowiskowej zmienna środowiskowa na liście zawierającej dwa elementy:

pierwszy element wskazuje, czy zdefiniowano zmienną środowiskową (value
"1") lub nie (wartość "0");
drugi element wskazuje wartość zmiennej środowiskowej.

Zmienne środowiskowe mają postać zmienna=wartośći jeśli zdefiniowano, listę
drugi element zawiera wartość. Jeśli wartość jest pusta, zmienna jest zdefiniowana, ale
nie jest z nim powiązany żaden tekst.

o ciąg get_ext(string plik)
Zwraca rozszerzenie filet, z wyjątkiem kropki oddzielającej. Rozszerzenie to wszystko
informacje zaczynające się od ostatniej kropki w nazwie pliku.

Jeśli nie zostanie znaleziona ostatnia kropka, zwracany jest pusty ciąg.

o int getpid()
Zwraca identyfikator procesu interpretera kodu bajtowego icmake icm-exec.

o ciąg dostaje ()
Zwraca następną linię odczytaną z klawiatury jako a ciąg. Linia wpisana na
klawiatura musi być zakończona klawiszem „Enter”, który nie jest przechowywany w zwróconym pliku
ciąg.

o ciąg get_path(string plik)
Zwraca przedrostek ścieżki filet. Przedrostek ścieżki zawiera wszystkie informacje aż do (i
włączając) końcowy separator katalogu (który jest, w zależności od pliku operacyjnego
systemowy, ukośnik do przodu lub do tyłu).

Jeśli nie zostanie znaleziona żadna ścieżka, zwracany jest pusty ciąg.

o int listaznajdź(lista pierwszy, ciąg str)
Zwraca pierwszy indeks w LST gdzie ciąg str zostanie znaleziony, lub -1 jeśli LST nie
zawierać str.

o int słuchaj (lista l)
Zwraca liczbę elementów w podstęp.

o podstęp lista (lista lewy, podstęp prawa strona)
Zwraca listę zawierającą sumę elementów lhs i Rhs.

o podstęp lista (lista pierwszy, ciąg str)
Zwraca listę zawierającą sumę elementów LST i str.

o podstęp makelist(ciąg maska)
Zwraca listę wszystkich pasujących plików maska. Np, lista make("*.c") zwraca listę
zawierający wszystkie pliki kończące się na .c.

o podstęp lista makelist (typ, ciąg maska)
Taka sama jak poprzednia funkcja, ale typ elementów katalogu może być
określony jako pierwszy argument:

znaczenie symbolu
IS_ALL pobiera wszystkie wpisy katalogu
IS_DIR pobiera wszystkie katalogi, w tym . I ..
IS_FILE uzyskać listę plików
IS_SUBDIR pobiera wszystkie podkatalogi

Pamiętaj, że wzór * nie będzie pasować do ukrytych wpisów w systemie uniksowym
systemy. Używać .* za to.

o podstęp makelist(ciąg maska, nowsza, ciąg plik porównawczy)
Zwraca listę wszystkich plików pasujących do maski, które są nowsze niż podane
plik porównawczy. Operator młodszy można użyć zamiast nowsza, Należy pamiętać, że nowsza i
młodszy są operatorami, a nie ciągami znaków.

o podstęp lista makijażu([int = IS_FILE,] ciąg maska, nowsza, ciąg plik porównawczy)
Taka sama funkcja jak poprzednia funkcja, ale rodzaj można określić jak w podstęp lista makelist (typ,
ciąg maska).

o makelist(ciąg maska, starszy, ciąg plik porównawczy)
Patrz wyżej; zwraca listę plików starszych niż plik porównawczy.

o lista makelist (typ, ciąg maska, starszy, ciąg plik porównawczy)
Taka sama funkcja jak poprzednia funkcja, ale rodzaj można określić jak w podstęp lista makelist (typ,
ciąg maska).

o int drukuj(...)
Pokazuje wszystkie argumenty (oddzielone przecinkami) na ekranie (tj. standardowy strumień wyjściowy).
Zwraca liczbę wydrukowanych argumentów.

o int printf(ciąg format, ...)
Pokazuje wszystkie argumenty (oddzielone przecinkami) na ekranie (tj. standardowy strumień wyjściowy).
Zwraca liczbę wydrukowanych argumentów ( format ciąg liczy się jako jeden argument).

If format zawiera symbole zastępcze %1 .. %n wyjście jest sformatowane (patrz także
formatowanie).

o int putenv(string zmienna środowiskowa)
Dodaje zmienna środowiskowa do prądu (icmake) środowisko Użyj formatu: „VAR=wartość”.
Zwraca 0.

o ciąg zmień rozmiar (ciąg ul. int nowa długość) Zwraca kopię ciągu str, przeskalowany do
nowa długość postacie. Gdyby nowa długość jest ujemna, zwracany jest pusty ciąg znaków,
if nowa długość przekracza str długości, następnie inicjowane są nowo dodane znaki
do pustych miejsc.

o int rozmiar(lista l)
Przestarzałe: użyj słuchaj.

o int lista rozmiarów(lista l)
Przestarzałe: użyj słuchaj.

o podstęp statystyka (ciąg wejście)
Returns stan(2) informacja o wpisie do katalogu wejście jako lista. Zwrócona lista
ma dwa elementy: element 0 to atrybut wartość, element 1 zawiera rozmiar
plik.

Atrybuty są zwracane jako flagi bitowe składające się z następujących predefiniowanych elementów
stałe:

S_IFCHR S_IFDIR S_IFREG
S_IREAD S_IWRITE S_IEXEC

Zobacz stan(2) strona podręcznika zawierająca znaczenia tych stałych.

o podstęp statystyki (sprawdzanie, ciąg wejście)
Taka sama jak poprzednia funkcja, ale poprzez określenie kontrola as P_NOCHECK Funkcja
nie zakończy skryptu. Raczej powraca stanWartość zwracana przez (2).

o int strchr(ciąg ul. ciąg znaki)
Zwraca pierwszy indeks w str gdzie dowolny ze znaków znaki zostanie znaleziony, lub -1
if str nie zawiera żadnego ze znaków znaki.

o int strlen(ciąg str)
Zwraca liczbę znaków w str (nie licząc końcowego 0).

o int strfind(ciąg stóg siana, ciąg igła)
Zwraca indeks w stóg siana gdzie igła zostanie znaleziony, lub -1 jeśli igła nie jest zawarty
in stóg siana.
To zdjęcie funkcjonować była nazywa strstr() in Wersje zanim 7.00.

o int strformat(strformat format,...)
Zwraca sformatowany ciąg znaków przy użyciu symboli zastępczych %1 .. %2 w celu adresowania argumentów
następujący format.
Przykład:

void main ()
{
int i = 10;
int j = 20;
ciąg s1;
ciąg s2;
// tradycyjne podejście:
s1 = (string)i + " " + (string)j + " " + (string)i;
// używając strformatu:
s2 = strformat("%1 %2 %1", i, j);
printf("s1 = %1, s2 = %2\n", s1, s2);
}

o ciąg strlwr(ciąg s)
Zwraca duplikat pisany małymi literami s.

o podstęp strtok(ciąg ul. ciąg separatory)
Zwraca listę zawierającą wszystkie podciągi str oddzielone jednym lub większą liczbą
(kolejne) znaki w separatory. Np, strtok("Witam świat+ icmake", " +")
zwraca listę zawierającą trzy ciągi "Cześć", „icmake”, "świat".

o ciąg strupr(string s)
Zwraca duplikat pisany wielkimi literami s.

o ciąg substr(ciąg text, int offsetowy, int liczyć)
Zwraca podciąg XNUMX, zaczynać od offset, składający się z liczyć postacie. Gdyby
offset przekracza (lub jest równy) rozmiarowi łańcucha lub if liczyć <= 0, a następnie pusty ciąg
jest zwracany. Gdyby offset jest mniejsza niż 0, wówczas stosuje się 0.

o int systemowy (ciąg polecenie)
Wykonuje komenda. Wartość zwracana wskazuje wartość końcową wykonanego polecenia. The
ciąg komenda może zawierać znaki przekierowania i/lub potoki.

o int systemowy (wew kontrola, ciąg polecenie)
Ta sama funkcjonalność co poprzednia funkcja, ale poprzez określenie kontrola as
NIESPRAWDZONE funkcja nie zakończy skryptu. Raczej zwróci
nazywany statusem wyjścia polecenia, lub 0x7f00 jeśli polecenie nie zostało znalezione.

o ciąg przyciąć (string s)
Zwraca kopię s bez początkowych i końcowych białych spacji.

o ciąg trimleft(string str)
Zwraca kopię s bez wiodących białych spacji.

o ciąg przyciąć (string s)
Zwraca kopię s bez końcowych białych spacji.

USER ZDEFINIOWANE FUNKCJE


unieważnić główny

Icmake skrypty muszą być wyposażone w funkcję zdefiniowaną przez użytkownika główny. Funkcja główny ma
trzy opcjonalne parametry, które można pominąć w ostatnim (otocz) do pierwszego
(argc), jak w C. Jego pełny prototyp to (uwaga: unieważnić typ zwrotu):

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

In Głównym (),

o argc reprezentuje liczbę elementów w argumentacja;

o argumentacja zawiera argumenty, przy czym element 0 jest równy nazwie pliku .bim
plik;

o otocz zawiera zmienne „środowiskowe”. Funkcja słuchaj mogą być stosowane w celu
określić liczbę jego elementów. Elementy w otocz mieć formę
zmienna=wartość. Alternatywnie funkcja getenv można użyć do odzyskania a
natychmiast określoną zmienną środowiskową. Przykład:

void main(int argc, lista argv)
{
lista do kompilacji;
int idx;

jeśli (argc == 1)
użycie(element(0, argv));

if (toCompile = zmienione("*.cc"))
{
for (idx = długość (do kompilacji); idx--; )
kompiluj(element(idx, dokompiluj));

if (getenv("dryrun")[0] == "0")
łączenie(element(2, argv));
}
}

Po zainicjowaniu wszystkich zmiennych globalnych w kolejności ich definicji główny nazywa się przez
icmakesystem wsparcia w czasie wykonywania w celu wykonywania dodatkowych zadań.

do tego zdefiniowane użytkownik Funkcje

Można zdefiniować dodatkowe funkcje. Po zdefiniowaniu funkcje te można wywołać. Do przodu
odwoływanie się do zmiennych lub funkcji nie jest obsługiwane, ale wywołuje rekursywnie
funkcje jest. Ponieważ deklaracje funkcji nie są obsługiwane, rekurencja pośrednia nie jest
obsługiwane albo.

Funkcje zdefiniowane przez użytkownika muszą posiadać następujące elementy:

o Typ zwracany przez funkcję, który musi być jednym z próżnia, int, ciąg or podstęp. Tam
nie jest typem domyślnym.

o Nazwa funkcji, np. skompilować.

o Lista parametrów, definiująca zero lub więcej parametrów oddzielonych przecinkami. Parametry
same składają się z nazwy typu (int, ciąglub podstęp) po którym następuje
identyfikator parametru. Np, (strunowy plik wyjściowy, ciąg źródło).

lub A ciało otoczony nawiasami klamrowymi ({ i }).

Ciała funkcji mogą zawierać (opcjonalnie inicjowane) definicje zmiennych. Zmienny
definicje zaczynają się od nazwy typu, po której następuje jeden lub więcej oddzielonych przecinkami (opcjonalnie
zainicjowane) identyfikatory zmiennych. Jeśli zmienna nie została jawnie zainicjowana, tak właśnie jest
domyślnie zainicjowany. Domyślnie int zmienna jest inicjowana na 0, a ciąg is
zainicjowany pustym ciągiem ("") I podstęp jest inicjowany listą elementów zerowych.

Oprócz zmiennych definicji ciała mogą zawierać zero lub więcej instrukcji (por.
Sekcja FLOW CONTROL). Należy pamiętać, że zmienne można definiować (i opcjonalnie inicjować)
gdziekolwiek wewnątrz funkcji, a także in Jeśli, dla i Podczas sprawozdania.

Zachowanie icmake-skrypty używające funkcji innych niż void, które nie zwracają wartości, nie są
zdefiniowane.

Użyj icmake online, korzystając z usług onworks.net


Darmowe serwery i stacje robocze

Pobierz aplikacje Windows i Linux

Komendy systemu Linux

Ad