Tiếng AnhTiếng PhápTiếng Tây Ban Nha

Ad


Biểu tượng yêu thích OnWorks

icmake - Trực tuyến trên đám mây

Chạy icmake trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks trên Ubuntu Online, Fedora Online, trình mô phỏng trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

Đây là icmake lệnh có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


icmake - Bảo trì chương trình (làm cho) tiện ích sử dụng C-như ngữ pháp

SYNOPSIS


imake [tùy chọn] nguồn [.im] [đích [.bim]] [- [args]]

icmun bimfile

MÔ TẢ


imake(1) có thể được sử dụng thay thế cho làm cho(1). Trong chế độ hoạt động tiêu chuẩn của nó, nó
gọi các chương trình sau:

o icm-pp để xử lý trước tệp icmake

o icm-comp để biên dịch mã byte imake s

o icm-executive để thực thi tệp mã byte

imake cho phép các lập trình viên sử dụng một ngôn ngữ lập trình (gần giống với ngôn ngữ lập trình nổi tiếng
C-ngôn ngữ lập trình) để xác định các hành động có liên quan đến chương trình (phức tạp)
Sự bảo trì. Đối với điều này, imake cung cấp các nhà khai thác đặc biệt khác nhau cũng như một bộ hỗ trợ
các chức năng đã được chứng minh là hữu ích trong việc bảo trì chương trình.

Chương trình icmun(1) có thể được sử dụng để tháo rời tệp mã byte (.bim) đã biên dịch. icmun
chủ yếu được sử dụng để minh họa, giáo dục và gỡ lỗi.

Các nguồn biên dịch lại tiện ích tạo truyền thống sau khi các tệp tiêu đề được sửa đổi. bên trong
bối cảnh C + + phát triển chương trình, đây thường là một ý tưởng tồi, vì thêm một thành viên mới vào
lớp thường không yêu cầu bạn biên dịch lại các nguồn của lớp. Để xử lý lớp
phụ thuộc icbuld(1) có thể kiểm tra CÁC LỚP HỌC các tệp có thể được sử dụng để xác định các phần phụ thuộc
giữa các lớp. Theo mặc định, các phụ thuộc lớp không được diễn giải. Tham khảo đến icmconf(7)
man-page để biết thêm chi tiết.

LỰA CHỌN


imake sử dụng các tệp và tùy chọn sau:

o nguồn: imake tệp nguồn tập lệnh (phần mở rộng mặc định: .im).

o định mệnh: nhị phân imake tệp script (mặc định: `source'.bim, được gọi là `tệp .bim '
dưới đây).

o --: imake phân tách đối số phân tách imake đối số từ các đối số được truyền
vào .bim filenl () args.: đối số sau -- được chuyển đến tệp .bim
nguyên trạng và có sẵn từ argv tham số được xác định là imake
kịch bản của chính tham số thứ hai của hàm (xem bên dưới tại phần USER ĐỊNH NGHĨA
CHỨC NĂNG). Đối với một số tùy chọn (xem bên dưới), -- dấu phân cách là không cần thiết.

imake hỗ trợ các tùy chọn khác nhau, được mô tả tiếp theo. Các -h tùy chọn ghi đè tất cả các tùy chọn khác
các tùy chọn, -a tùy chọn ghi đè tất cả các tùy chọn khác ngoại trừ -h. Hành động còn lại
tùy chọn (-NS, -NS, -e, -tôi, -p-t) chỉ có thể chỉ định một:

o -a
hiển thị thông tin về imake, được kiểm soát bởi -h;

o -b
ngưng: sử dụng tùy chọn -e để thay thế;

o -c
các imake tệp nguồn được biên dịch, tạo tệp .bim;

o -e
thực hiện imake tệp .bim, được cung cấp dưới dạng imakeđối số tệp đầu tiên. Bất kỳ bổ sung nào
các đối số được chuyển đến tệp .bim nguyên trạng và -- không nên được chỉ định;

o -F
tên tệp và cờ cũng như tổng quan về tất cả các hành động sẽ được thực hiện bởi
imake được hiển thị trên dòng đầu ra tiêu chuẩn;

o -h
cung cấp thông tin sử dụng và kết thúc imake;

o -i
đối số đầu tiên là imake tệp nguồn, tệp nhị phân mặc định là
được xây dựng nếu cần thiết. Bất kỳ đối số bổ sung nào được chuyển vào tệp .bim
nguyên trạng, và -- không nên được chỉ định;

o -p
các imake tệp nguồn chỉ được xử lý trước và tệp được xử lý trước được viết
đến imakeđối số tệp thứ hai của (theo mặc định `source'.pim);

o -q
bị bỏ qua, sẽ bị xóa trong tương lai imake phiên bản;

o -t
đối số sau đây -t là tên của tệp .bim tạm thời, tệp này đã bị xóa
sau khi imakecuộc gọi của. Khi nào . được chỉ định làm tên của tệp .bim tạm thời
sau đó là thư mục tạm thời mặc định, tiếp theo là imakeid quy trình của, theo sau là
.bim Được sử dụng.

Sau tên của tệp .bim tạm thời là tên của imake tập lệnh nguồn
phải được chỉ định. Bất kỳ đối số bổ sung nào cũng được chuyển đến tệp .bim nguyên trạng và
-- không nên được chỉ định; Sau khi đặt cờ thực thi của tệp tập lệnh nguồn
(chmod +x kịch bản), và cung cấp cho nó một dòng đầu tiên như thế này:

#! / usr / bin / icmake -t.

các imake script có thể được gọi trực tiếp:

kịch bản arg1 arg2

trong trường hợp đó imake kịch bản `script ' được thực thi trong khi nó nhận được
đối số kịch bản arg1 arg2.

o -T
tùy chọn này phải được cung cấp với tên của một thư mục được sử dụng để lưu trữ
tập tin tạm thời. Ví dụ: khi biên dịch một imake script, đầu ra của imake'S
bộ tiền xử lý là một tệp tạm thời bị xóa khi thoát. Theo mặc định / Tmp Được sử dụng,
trừ khi / Tmp không phải là một thư mục có thể ghi, trong trường hợp đó, người dùng hiện tại $ HOME
thư mục được sử dụng. Tên tệp tạm thời ngầm định luôn bắt đầu bằng id quy trình là
hiện nay imake quá trình.

o -v
trưng bày imakesố phiên bản của và kết thúc imake, được kiểm soát bởi -h

icmun:

bimfile: nhị phân imake tập kịch bản.

NGƯỜI GIA CÔNG HƯỚNG DẪN


Các chỉ thị tiền xử lý sau có sẵn:

o bình luận:
Tiêu chuẩn C nhận xét (tất cả giữa /**/) cũng như comment-to-end-of-line (tất cả
nội dung dòng sau //) bị bỏ qua.

o Khởi động Shell: Dòng đầu tiên của imake-script có thể bắt đầu bằng #!con đường, Nơi
con đường xác định vị trí tuyệt đối của imake chương trình. Bằng cách tạo kịch bản
có thể thực thi, nó có thể được gọi mà không cần gọi rõ ràng imake.

Ví dụ: nếu dòng đầu tiên của icmakefile (có thể thực thi) 'icm' (không có phần mở rộng)
chứa

#! / usr / bin / icmake -i

sau đó icm có thể được đưa ra dưới dạng lệnh, do đó thực thi

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

Ngoài ra,

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

có thể được sử dụng, dẫn đến việc thực thi

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

Trong trường hợp này, tệp nhị phân bị xóa khi thoát.

o #include "tên tệp"
Tập tin tên tập tin được đưa vào vị trí của chỉ thị

o #include
Tập tin tên tập tin được đưa vào vị trí của #include chỉ thị; tên tập tin
được tìm kiếm trong các thư mục được phân tách bằng dấu hai chấm được chỉ định bởi IM môi trường
Biến đổi. Sự xuất hiện đầu tiên của tên tập tin trong các thư mục được chỉ định bởi IM
biến môi trường được sử dụng.

o #định nghĩa định danh [Định nghĩa]
Văn bản định danh sẽ được thay thế bởi định nghĩa. Định nghĩa có thể chứa
tham chiếu đến các số nhận dạng đã được xác định, sử dụng $ {định danh} định dạng. Nếu
$ {định danh} chưa được xác định (chưa), văn bản $ {định danh} được giữ theo nghĩa đen.
Để ngăn chặn đệ quy vô hạn tối đa là 100 $ {định danh} thay thế được cho phép.

Các định nghĩa tiếp tục ở dòng tiếp theo nếu ký tự cuối cùng trên một dòng là
dấu gạch chéo ngược (\). (không có trong định nghĩa). Bộ tiền xử lý
nối các chuỗi dấu ngoặc kép và các chuỗi được trích dẫn kép không được kéo dài nhiều
các dòng. Nhiều khoảng trống (bên ngoài chuỗi được trích dẫn kép) trong các định nghĩa là
ký hợp đồng với một không gian trống duy nhất.

Định nghĩa sau # xác định của định danh là tùy chọn. Nếu bị bỏ qua,
macro được xác định, vì vậy nó có thể được sử dụng trong #if (n) def chỉ thị (xem bên dưới), nhưng chúng
không được thay thế bằng bất kỳ văn bản nào trong imake câu lệnh mã.

o #ifdef định danh
Nếu định danh macro đã được xác định khối mã tiếp theo (cho đến khi khớp #khác
or #endif chỉ thị đã được đọc) được biên dịch theo byte. Nếu không, khối mã là
mặc kệ.

o #ifndef định danh
Nếu định danh vĩ mô là không đã xác định khối mã tiếp theo (cho đến khi khớp
#khác or #endif chỉ thị được phát hiện) được biên dịch theo byte. Nếu không, khối của
mã bị bỏ qua.

o #khác
Chấm dứt một #ifdef#ifndef chỉ thị, hủy bỏ quyết định chấp nhận về
đoạn mã sau. Chỉ một #khác chỉ thị có thể được liên kết với #if (n) def
chỉ thị.

o #endif
Kết thúc khối tiền xử lý bắt đầu từ kết hợp #ifdef, #ifndef or #khác
chỉ thị. Các #endif thư mục và sự phù hợp của nó #if (n) def chỉ thị phải được
được chỉ định trong cùng một tệp.

o #undef định danh
Hủy bỏ định danh từ tập hợp các ký hiệu xác định. Điều này không ảnh hưởng đến
đặc điểm kỹ thuật của bất kỳ ký hiệu nào được xác định trước đó, trong đó định danh của định nghĩa
đã được dùng. Nếu như định danh chưa được xác định, một cảnh báo sẽ được đưa ra.

DỮ LIỆU LOẠI


imake hỗ trợ các kiểu dữ liệu này:

o ASCII tính cách không thay đổi
Hằng số ký tự ASCII bao gồm một ký tự, được bao quanh bởi đơn hoặc kép
dấu ngoặc kép. Các ký tự đơn (ví dụ: 'Một') đại diện cho chính nhân vật. Tiêu chuẩn
trình tự thoát (ví dụ: '\n') được hỗ trợ và đại diện cho tiêu chuẩn được chuyển đổi của họ
giá trị (ví dụ: '\n' đại diện cho giá trị ascii 10 (thập phân)). Thoát không tiêu chuẩn
trình tự (ví dụ: '\NS') đại diện cho ký tự ascii theo sau ký tự thoát
(vì thế '\NS' bằng 'NS'). Chuỗi thoát bao gồm ba chữ số bát phân đại diện
ký tự ascii tương ứng với giá trị bát phân modulo 256 (ví dụ: '\ 123').
Trình tự thoát bao gồm một x theo sau là hai chữ số thập lục phân thể hiện
ký tự ascii tương ứng với giá trị thập lục phân (ví dụ: '\ xa4').

o int
Giá trị tích phân, từ -0x8000 thông qua 0x7fff. int hằng số có thể là
được chỉ định dưới dạng số thập phân (bắt đầu bằng chữ số 1 đến 9), số bát phân
(bắt đầu bằng 0, theo sau là một hoặc nhiều chữ số bát phân) số thập lục phân
(bắt đầu bằng 0x, theo sau là một hoặc nhiều chữ số thập lục phân) hoặc bằng ASCII
hằng số ký tự.

o chuỗi
Các biến văn bản. Hằng số chuỗi được phân cách bằng dấu ngoặc kép. Nhiều chuỗi
các hằng số có thể được nối, nhưng một hằng số chuỗi đơn có thể không kéo dài nhiều
các dòng. Hằng số chuỗi chỉ được phân tách bằng khoảng trắng (tức là khoảng trống, dòng mới,
chú thích) được nối và đại diện cho một hằng số chuỗi. Để chỉ ra một
end-of-line trong một hằng chuỗi sử dụng \n trình tự thoát.

Hằng số ký tự ASCII được bao quanh bởi dấu ngoặc kép cũng có thể được sử dụng trong
biểu thức số học nếu một trong các toán hạng là một int. Ký tự đơn
chuỗi không đổi phải là một hằng số, và không thể là một chuỗi biến.

Tương tự như vậy, hằng số ký tự ASCII được bao quanh bởi dấu ngoặc kép có thể được sử dụng trong
các tình huống trong đó toán hạng chuỗi được mong đợi.

o
Một cấu trúc dữ liệu có chứa một loạt các dữ liệu có thể truy cập riêng lẻ chuỗi các giá trị. Khi nào
một danh sách chứa các phần tử, phần tử đầu tiên của nó được biểu thị bằng chỉ số 0.

o làm mất hiệu lực
Được sử dụng với các định nghĩa hàm để chỉ ra rằng hàm không trả về
giá trị.

Các biến có thể được xác định ở cấp toàn cục cũng như ở bất kỳ cấp cục bộ nào bên trong
chức năng. Khi được xác định bên trong các chức năng, tiêu chuẩn C quy tắc xác định phạm vi và khả năng hiển thị
ứng dụng. Ví dụ: các biến cục bộ chỉ có thể được sử dụng cho riêng chúng hoặc trong các biến được lồng sâu hơn
các khối, khả năng hiển thị của chúng được che giấu trong các khối lồng nhau sâu hơn bằng cách xác định một
biến được đặt tên bên trong các khối lồng nhau sâu hơn đó. Các biến được gõ mạnh và
không thể có loại làm mất hiệu lực.

Các biến có thể được khởi tạo khi chúng được xác định. Khởi tạo là các biểu thức,
có thể sử dụng các hàm do người dùng định nghĩa trước hoặc do người dùng xác định, các giá trị không đổi và các giá trị của các biến
có thể nhìn thấy ở điểm xác định.

DỰ KIẾN HẰNG SỐ


Các hằng số sau được xác định trước bởi imake. Tất cả đều không đổi int các giá trị:

Giới thiệu về giới thiệu của bạn
giá trị biểu tượng dành cho
Giới thiệu về giới thiệu của bạn
O_ALL 8 danh sách
Danh sách tạo O_DIR 2
O_FILE 1 danh sách tạo
Danh sách tạo O_SUBDIR 4
Giới thiệu về giới thiệu của bạn
TẮT 0 tiếng vang
BẬT 1 tiếng vọng
Giới thiệu về giới thiệu của bạn
P_CHECK 0 lệnh gọi hệ thống
P_NOCHECK 1 cuộc gọi hệ thống
Giới thiệu về giới thiệu của bạn
Chỉ số S_IEXEC 32
S_IFCHR 1 chỉ số
S_IFDIR 2 chỉ số
Chỉ số S_IFREG 4
S_IREAD 8 chỉ số
S_IWRITE 16 chỉ số
Giới thiệu về giới thiệu của bạn

Các hằng số sau phụ thuộc vào kiến ​​trúc:

... ─────────────
ký hiệu 1 khi được xác định trên nền tảng, nếu không thì 0
... ─────────────
unix Unix, thường là với trình biên dịch gcc của GNU
UNIX có thể có sẵn
linux x86 chạy Linux (thường với gcc)
LINUX cũng có thể có sẵn
M_SYSV, M_UNIX x86 chạy SCO / Unix
_POSIX _SOURCE Unix với trình biên dịch tuân thủ Posix
__hpux HP-UX, với trình biên dịch HP gốc
... ─────────────

ĐIỀU HÀNH


được nhập vào Toán hạng):

Tất cả C toán tử khả dụng (ngoại trừ toán tử con trỏ, như imake không hỗ trợ
con trỏ). Họ hoạt động giống như của họ C-chương trình đối chiếu ngôn ngữ.

đánh máy bằng chuỗi ký tự Toán hạng):

Trong chuỗi loại biến và / hoặc hằng số các toán tử sau có sẵn (ab
đại diện chuỗi biến hoặc hằng số):

o a + b: trả về một cái mới chuỗi giá trị chứa nối của chuỗi giá trị a
b. Lưu ý rằng chuỗi các hằng số có thể được kết hợp trực tiếp (mà không cần sử dụng +
toán tử), ví dụ: hai dòng sau đều xác định chuỗi "xin chào thế giới ":

"Chào thế giới"
"xin chào" + "thế giới"

o a += b: a phải là một chuỗi biến, mà chuỗi biến hoặc giá trị b is
thêm vào.

o so sánh chuỗi: toán tử == != <= >= < > !=== có thể được áp dụng cho chuỗi
giá trị hoặc biến, trả về 1 nếu so sánh thành công, ngược lại là 0.
So sánh phân biệt chữ hoa chữ thường và tuân theo thứ tự hoặc các ký tự như đã định nghĩa
trong ASCII bộ ký tự.

o !a: boolean ! (not) toán tử trả về 1 nếu chuỗi a trống, nếu không thì 0 là
trả lại.

o a trẻ hơn b, a mới hơn b: trả về 1 nếu tệp a gần đây hơn tệp b. Ví dụ,
"source.cc" mới hơn "source.o". Tập tài liệu ab không cần phải tồn tại: nếu cả hai đều không
tồn tại 0 được trả về; nếu như b không tồn tại, 1 được trả về; nếu như a không tồn tại 0 là
trả lại; nếu chúng bằng nhau 0 cũ được trả về. (NS tồn tại () chức năng xác định trước
(xem bên dưới, phần DỰ KIẾN CHỨC NĂNG) có thể được sử dụng để kiểm tra một cách rõ ràng xem một
File tồn tại).

o a b: lần lượt 1 nếu tệp a cũ hơn tệp b. Ví dụ, "libprog.a"
"source.o". Tập tài liệu ab không phải tồn tại: nếu cả hai không tồn tại thì 0 là
trả lại; nếu như a không tồn tại, 1 được trả về; nếu như b không tồn tại 0 được trả về; nếu như
chúng đều cũ 0 được trả về.

o []: toán tử chỉ mục lấy một ký tự từ một biến chuỗi hoặc hằng số: it
trả về một chuỗi dưới dạng giá trị. Do đó, câu lệnh sau đây biên dịch OK:

// giả sử str1 và str2 là các chuỗi
str1 = str2 [3];

nhưng câu lệnh sau sẽ không biên dịch:

str2 [3] = "a";

Một chuỗi trống được trả về nếu giá trị chỉ mục không hợp lệ được cung cấp.

o Toán tử `backtick` (`chuỗi cmd`)
Một chuỗi được đặt giữa hai dấu gạch ngược được thực thi bởi bật ra(3) chức năng. Các
đầu ra tiêu chuẩn được kiểm soát bởi lệnh được lưu trữ trong đối số chuỗi là
trả về dưới dạng một danh sách. Một danh sách trống cho biết rằng lệnh không thể được thực hiện.
Một lệnh có thể được thực thi nhưng không tạo ra bất kỳ đầu ra nào trả về một danh sách
chứa một phần tử trống. Đầu ra luồng lỗi tiêu chuẩn của lệnh không
được thu thập bởi nhà điều hành backtick. Tuy nhiên, chuyển hướng shell tiêu chuẩn có thể là
được sử dụng để thu thập đầu ra của luồng lỗi tiêu chuẩn. Thí dụ:

printf (`" ls "`); // in các phần tử trong
// thư mục hiện tại

Hàm được xác định trước eval (chuỗi cmd) hoạt động chính xác như backtick
toán tử: chúng là từ đồng nghĩa.

list-type Toán hạng):

Trong loại biến và / hoặc giá trị các toán tử sau có sẵn:

o a + b: trả về một cái mới giá trị chứa nối của giá trị a
b. Đây là không một hoạt động tập hợp: nếu một phần tử xuất hiện cả trong a và trong b, họ sẽ
xuất hiện hai lần trong danh sách kết quả (bộ bổ sung được cung cấp bởi phần mềm cài sẵn
chức năng yết hầu).

o a - b: trả về một cái mới giá trị chứa các phần tử trong a điều đó không có mặt
in b. Điều này is một phép toán khác biệt: danh sách trả về chứa tất cả các phần tử
in a đó không phải là yếu tố của b.

o a += b: các phần tử trong b được thêm vào các phần tử trong a, mà phải là một
Biến đổi. Đây là không một hoạt động thiết lập.

o a -= b: các phần tử trong b bị xóa khỏi các phần tử trong a, mà phải là một
Biến đổi. Cái này is một hoạt động tập hợp: tất cả các phần tử của a được tìm thấy trong b đang
bị loại khỏi a.

o liệt kê các so sánh bình đẳng: toán tử !=== có thể được áp dụng cho giá trị hoặc
biến. Nhà điều hành == trả về 1 nếu cả hai danh sách có từng phần tử giống hệt nhau
các phần tử, nếu không thì 0 được trả về. Nhà điều hành != đảo ngược kết quả của ==.

o !a: boolean ! toán tử trả về 1 nếu a trống, nếu không thì 0 là
trả lại.

o []: toán tử chỉ mục lấy một phần tử danh sách từ một biến danh sách: nó trả về một
chuỗi như một giá trị. Do đó, câu lệnh sau đây biên dịch OK:

// giả sử lst là một danh sách, str là một chuỗi
str = lst [3];

nhưng câu lệnh sau sẽ không biên dịch:

lst [3] = str;

Một chuỗi trống được trả về nếu giá trị chỉ mục không hợp lệ được cung cấp.

đúc:

Loại phôi có thể được thực hiện bằng cách sử dụng tiêu chuẩn C toán tử ép kiểu để truyền:

o Chuỗi đến int và ngược lại ((int) "123", (chuỗi) 55)

o Chuỗi đến danh sách ( lst = (danh sách) "xin chào")

LƯU KIỂM SOÁT


imake cung cấp tập hợp con sau của Ccủa các tuyên bố. Chúng có thể được sử dụng như trong C
ngôn ngữ lập trình.

o biểu hiện ;
Câu lệnh biểu thức đơn giản;

o Câu lệnh ghép
Các biến thuộc bất kỳ loại nào có thể được xác định và khởi tạo ở bất kỳ đâu bên trong bất kỳ hợp chất nào
tuyên bố. Các khả năng hiển thị của một biến bắt đầu từ điểm xác định của nó.

o if (tình trạng) tuyên bố
Bên trong điều kiện, một biến có thể được định nghĩa và khởi tạo. Ví dụ,

if (string str = getText ())
quy trình (str);

Trong ví dụ này, quá trình không được gọi nếu getText () trả về một chuỗi trống. Các
biến str không tồn tại trước hoặc sau if tuyên bố.

o if (tình trạng) tuyên bố khác tuyên bố
Như với câu lệnh trước, bên trong điều kiện, một biến có thể được xác định và
khởi tạo.

o cho (trong đó; tình trạng; tăng) tuyên bố
Các biến (thuộc một loại duy nhất) có thể được khởi tạo (và tùy chọn được xác định) trong
trong đó phần. Các trong đó, điều kiệntăng các phần có thể vẫn còn trống. Các
phần điều kiện trống được hiểu là `luôn luôn đúng'.

o trong khi (tình trạng) tuyên bố
Bên trong điều kiện, một biến có thể được định nghĩa và khởi tạo.
Một bổ sung do hữu ích. Cảm ơn ! trong khi() tuyên bố không có sẵn. Lưu ý rằng việc xác định một
biến, sử dụng một biểu thức khởi tạo có nghĩa là việc khởi tạo
diễn đạt được thực hiện ở mỗi lần lặp lại trong khi tuyên bố. Vì vậy, sau đây
câu lệnh sẽ không bao giờ kết thúc và sẽ hiển thị một dòng giá trị không bao giờ kết thúc 10:

trong khi (int x = 10)
printf (x--, "\ n");

o trở về;trở lại biểu hiện;
Trơn trở lại câu lệnh có thể được sử dụng trong làm mất hiệu lực chức năng và trở lại biểu hiện
các câu lệnh được sử dụng trong các loại hàm khác. Chức năng chính có loại trả lại
làm mất hiệu lực và như vậy trong chính chỉ đơn giản trở lại câu lệnh có thể được sử dụng. Theo mặc định, một imake
giá trị thoát của script bằng 0. Sử dụng hàm tích hợp ra (xem bên dưới) để chỉ định
bất kỳ giá trị thoát nào khác.

Be khuyên: hành vi của các hàm non-void không trả về giá trị là không xác định.

o phá vỡ
chotrong khi câu lệnh, ghi đè điều kiện của câu lệnh.

o tiếp tục
Tiếp tục với sự lặp lại tiếp theo của một cho or trong khi tuyên bố.

o thoát (biểu thức)
Kết thúc việc thực hiện một imake-kịch bản. Các biểu hiện phải đánh giá một int
giá trị này trở thành giá trị thoát của tập lệnh.

DỰ KIẾN CHỨC NĂNG


imake cung cấp các chức năng được xác định trước sau đây, có thể được sử dụng ở mọi nơi trong imake
các tập lệnh. Tổng quan sau đây được sắp xếp theo thứ tự bảng chữ cái theo tên hàm.

o làm mất hiệu lực arghead (chuỗi h)
Chức năng trợ giúp của hành () (xem thêm bên dưới tại hành ()): xác định `` đầu đối số '',
được sử dụng với hành (). Theo mặc định, `` đối số đầu '' là một chuỗi rỗng.

o làm mất hiệu lực đuôi cá mập (dây t)
Chức năng trợ giúp của hành () (xem thêm bên dưới tại hành ()): xác định `` đuôi đối số '',
được sử dụng với hành (). Theo mặc định, `` đuôi đối số '' là một chuỗi rỗng.

o int ascii (chuỗi s)
Trả về ký tự đầu tiên của s như một int; ví dụ, ascii ("A") trả về 65;

o chuỗi ascii (int i)
Trả hàng i như một chuỗi, ví dụ: ascii(65) trả về chuỗi "Một";

o chuỗi change_base (chuỗi tập tin, chuỗi cơ sở mới)
Thay đổi tên cơ sở của hồ sơ, trả về tên đã thay đổi. Ví dụ,
change_base ("/ path / demo.im", "ngoài") Trả về "/path/out.im";

o chuỗi change_ext (chuỗi tập tin, chuỗi mới)
Thay đổi phần mở rộng của hồ sơ, trả về tên đã thay đổi. Ví dụ,
rss_changeExt ("source.cc", "o") Trả về "source.o";

o chuỗi change_path (chuỗi tập tin, chuỗi con đường mới)
Thay đổi đặc điểm kỹ thuật đường dẫn của hồ sơ, trả về tên đã thay đổi. Ví dụ,
change_path ("tmp / binary", "/ usr / bin") Trả về "/ usr / bin / binary". Lưu ý rằng
/- dấu phân tách được chèn nếu cần thiết.

o chuỗi chdir (chuỗi newdir)
Thay đổi thư mục làm việc của script, trả về dir trước đó dưới dạng tuyệt đối
con đường.

Sử dụng chdir (".") để có được thư mục làm việc hiện tại, chdir ("") có thể được sử dụng để
có được thư mục làm việc khởi động (chức năng này đã bị hỏng trong các bản phát hành
trước 7.00, nhưng hiện đang hoạt động). Hàm kết thúc
imake-script nếu được chỉ định thư mục mới không tồn tại.

o chuỗi chdir (int kiểm tra, chuỗi newdir)
Chức năng tương tự như chức năng trước đó, nhưng bằng cách chỉ định kiểm tra as
P_NOCHECK. hàm sẽ không kết thúc tập lệnh. Thay vào đó, nó sẽ trả về
thư mục làm việc hiện tại của script.

o cmdhead (chuỗi h)
Chức năng trợ giúp của hành () (xem thêm bên dưới tại hành ()): Xác định một `` đầu lệnh '', để
được sử dụng với hành (). Theo mặc định, `` command head '' là một chuỗi rỗng.

o cmdtail (chuỗi t)
Chức năng trợ giúp của hành () (xem thêm bên dưới tại hành ()): Định nghĩa một `` đuôi lệnh '', để
được sử dụng với hành (). Theo mặc định, đuôi lệnh là một chuỗi rỗng.

o echo (int opt)
Kiểm soát tiếng vọng của các chương trình được gọi (và các đối số của chúng), chỉ định TẮT nếu vang vọng
không được yêu cầu. Theo mặc định echo (BẬT) Được sử dụng.

o chuỗi phần tử (int mục lục, (Hoặc dây) v.v.)
Các hành động giống với toán tử chỉ mục: tham chiếu đến chỉ mục ([]) toán tử trong
phần ĐIỀU HÀNH.

o eval (chuỗi str)
Hàm này hoạt động giống hệt với toán tử backtick. Ví dụ được cung cấp với
toán tử backtick do đó cũng có thể được viết như thế này:

printf (eval ("ls")); // in các phần tử hiện tại
// danh mục

o thực thi (chuỗi cmd, ...)
Thực thi lệnh với các đối số. Mỗi đối số sẽ được bắt đầu bằng arghead ()'S
đối số và được đính kèm bởi argtail ()của đối số. Lưu ý rằng không có khoảng trống nào được chèn
giữa arghead ()của nội dung, đối số thích hợp, và argtail ()của đối số. Tất cả các
do đó, các đối số đã sửa đổi được nối với nhau, lần này được phân tách bằng các ô trống duy nhất và
sau đó cmdhead ()nội dung của được chèn vào giữa lệnh và đối số đầu tiên
(ở hai bên được phân định bằng các ô trống duy nhất) và cmdtail ()nội dung của được thêm vào
đối với các đối số (một lần nữa, được phân tách bằng một ô trống). PATH được tìm kiếm để xác định vị trí
cmd. 0 được trả về.

o thực thi (int kiểm tra cmd, chuỗi cmd, ...)
Chức năng tương tự như chức năng trước đó, nhưng bằng cách chỉ định kiểm tra as
CHƯA ĐƯỢC KIỂM TRA hàm sẽ không kết thúc tập lệnh. Thay vào đó, nó sẽ trả về
được gọi là trạng thái thoát của lệnh, hoặc 0x7f00 nếu lệnh không được tìm thấy.

o thực thi (chuỗi cmd, chuỗi cmdhd, chuỗi arghd, ..., chuỗi tranh luận, chuỗi cmdtl)
Giống như hành (), nhưng đầu / đuôi lệnh và đầu / đuôi đối số phải được chỉ định.

Lệnh được thực thi thực sự bắt đầu bằng cmd, theo dõi bởi cmdhd. Tiếp theo là một loạt
trong số các đối số theo sau, mỗi đối số được bao bởi arghdtranh cãi. Lệnh kết thúc bằng
cmdtl. 0 được trả lại

o thực thi (int kiểm tra, chuỗi cmd, chuỗi cmdhd, chuỗi arghd, ..., chuỗi tranh luận,
chuỗi cmdtl)
Chức năng tương tự như chức năng trước đó, nhưng bằng cách chỉ định kiểm tra as
CHƯA ĐƯỢC KIỂM TRA hàm sẽ không kết thúc tập lệnh. Thay vào đó, nó sẽ trả về
được gọi là trạng thái thoát của lệnh, hoặc 0x7f00 nếu lệnh không được tìm thấy.

o int tồn tại (chuỗi tập tin)
Trả về giá trị khác XNUMX nếu hồ sơ tồn tại, nếu không thì 0 được trả về.

o fgets (chuỗi tập tin, bù lại)
LƯU Ý: in imake phiên bản 8.00.00 nguyên mẫu của chức năng này đã được thay đổi từ
fgets (chuỗi tập tin, int bù lại) đến fgets (chuỗi tập tin, bù lại).

Dòng tiếp theo được tìm thấy ở phần bù được chứa trong bù đắp được đọc từ hồ sơ. Vượt qua một
danh sách trống để đồ ăn vặt đọc hồ sơ ngay từ đầu.

Nó trả về một danh sách có chứa phần tử đầu tiên là nội dung của dòng đã đọc
(không có \n line terminator), là phần tử thứ hai của nó là phần tử cuối của line '\n'
(nếu gặp phải), và là phần tử thứ ba của nó, chuỗi OK nếu một dòng thành công
đọc, FAIL nếu đọc từ tệp không thành công. Khi đọc ở EOF, một danh sách trống là
trả lại. Danh sách trả về có thể chứa các phần tử bổ sung, nằm trong
được sử dụng bởi đồ ăn vặt khi đọc dòng tiếp theo.

Để đọc nhiều dòng, hãy bắt đầu bằng cách chuyển một danh sách trống dưới dạng được của đối số thứ hai.
Để đọc các dòng tiếp theo, hãy chuyển danh sách trả về trước đó đến của fgets 2
tranh luận.

Dưới đây là một ví dụ cho thấy cách đọc một tệp hoàn chỉnh:

danh sách ret;
trong khi (1)
{
ret = fgets ("tên tệp", ret);
nếu (! ret)
phá vỡ;
process (ret [0], ret [1]);
}

o int fprintf (chuỗi tên tệp, ...)
Thêm tất cả các đối số (được phân tách bằng dấu phẩy) vào tệp tên tập tin. Trả về số lượng
đối số được in.

o int fprintf (chuỗi tên tệp, chuỗi định dạng, ...)
Thêm tất cả các đối số (được phân tách bằng dấu phẩy) vào tệp tên tập tin. Trả về số lượng
đối số được in.

If định dạng chứa phần giữ chỗ% 1 ..% n đầu ra được định dạng (xem thêm
định dạng str). Lưu ý rằng trong trường hợp này, việc đếm đối số (cũng) bắt đầu ngoài
chuỗi định dạng: đối số đầu tiên sau định dạng được gọi là %1.

o chuỗi get_base (chuỗi tập tin)
Trả về tên cơ sở của hồ sơ. Tên cơ sở là tệp không có tiền tố đường dẫn của nó
và không có phần mở rộng của nó. Phần mở rộng là tất cả thông tin bắt đầu từ phần cuối cùng
dấu chấm trong tên tệp. Nếu không tìm thấy dấu chấm cuối cùng, tên tệp là tên cơ sở.
Ví dụ: tên cơ sở của ab bằng a, tên cơ sở của abc bằng ab, cơ sở
tên của a / b / c bằng c.

o chuỗi getch ()
Trả về phím được nhấn tiếp theo dưới dạng một chuỗi (không cần nhấn Enter).

o chuỗi get_dext (chuỗi tập tin)
Trả về phần mở rộng của hồ sơ, bao gồm cả dấu chấm phân cách. Phần mở rộng là tất cả
thông tin bắt đầu từ dấu chấm cuối cùng của tên tệp.

Nếu không tìm thấy dấu chấm cuối cùng, một chuỗi trống được trả về.

o getenv (chuỗi envvar)
Trả về giá trị của biến môi trường envvar trong danh sách có hai phần tử:

phần tử đầu tiên cho biết liệu biến môi trường đã được xác định hay chưa (giá trị
"1") hay không (giá trị "0");
phần tử thứ hai cho biết giá trị của biến môi trường.

Các biến môi trường có dạng biến = giá trịvà nếu được xác định, danh sách của
phần tử thứ hai chứa giá trị. Nếu giá trị trống, biến được xác định, nhưng
không có văn bản nào được liên kết với nó.

o chuỗi get_ext (chuỗi tập tin)
Trả về phần mở rộng của hồ sơ, ngoại trừ dấu chấm phân cách. Phần mở rộng là tất cả
thông tin bắt đầu từ dấu chấm cuối cùng trong tên tệp.

Nếu không tìm thấy dấu chấm cuối cùng, một chuỗi trống được trả về.

o int getpid ()
Trả về process-id của trình thông dịch mã byte icmake icm-executive.

o chuỗi được()
Trả về dòng tiếp theo được đọc từ bàn phím dưới dạng chuỗi. Dòng được nhập trên
bàn phím phải được kết thúc bằng phím `` Enter '', phím này không được lưu trữ trong
chuỗi.

o chuỗi get_path (chuỗi tập tin)
Trả về tiền tố đường dẫn của hồ sơ. Tiền tố đường dẫn là tất cả thông tin cho đến (và
bao gồm) dấu phân tách thư mục cuối cùng (tùy thuộc vào hoạt động
hệ thống, một dấu gạch chéo ngược hoặc ngược).

Nếu không tìm thấy đường dẫn nào, một chuỗi trống được trả về.

o int listfind (danh sách cuối cùng, chuỗi str)
Trả về chỉ mục đầu tiên trong lst nơi chuỗi str được tìm thấy hoặc -1 nếu lst không
chứa str.

o int listlen (danh sách l)
Trả về số phần tử trong .

o listunion (danh sách xin chào, rh)
Trả về một danh sách có chứa sự kết hợp của các phần tử trong lhRHS.

o listunion (danh sách cuối cùng, chuỗi str)
Trả về một danh sách có chứa sự kết hợp của các phần tử trong lststr.

o makelist (chuỗi mặt nạ)
Trả về danh sách tất cả các tệp phù hợp mặt nạ. Ví dụ, makelist ("*. c") trả về một danh sách
chứa tất cả các tệp kết thúc bằng .c.

o makelist (loại, chuỗi mặt nạ)
Tương tự như chức năng trước đó, nhưng kiểu của các phần tử thư mục có thể là
được chỉ định làm đối số đầu tiên của nó:

ý nghĩa biểu tượng
IS_ALL lấy tất cả các mục trong thư mục
IS_DIR có được tất cả các thư mục, bao gồm cả. và ..
IS_FILE lấy danh sách các tệp
IS_SUBDIR lấy tất cả các thư mục con

Lưu ý rằng mẫu * sẽ không khớp với các mục nhập ẩn trong hoạt động kiểu Unix
các hệ thống. Sử dụng .* cho điều đó.

o makelist (chuỗi mặt nạ, mới hơn, chuỗi so sánh)
Trả về danh sách tất cả các tệp phù hợp với mặt nạ mới hơn so với một tệp được cung cấp
tập tin so sánh. Nhà điều hành trẻ hơn có thể được sử dụng thay vì mới hơn. Lưu ý rằng mới hơn
trẻ hơn là các toán tử, không phải là chuỗi.

o makelist ([int = IS_FILE,] chuỗi mặt nạ, mới hơn, chuỗi so sánh)
Tương tự như chức năng trước đó, nhưng kiểu có thể được chỉ định như trong makelist (loại,
chuỗi mặt nạ).

o makelist (chuỗi mặt nạ, lớn hơn, chuỗi so sánh)
Xem ở trên; trả về danh sách các tệp cũ hơn tệp so sánh.

o makelist (loại, chuỗi mặt nạ, lớn hơn, chuỗi so sánh)
Tương tự như chức năng trước đó, nhưng kiểu có thể được chỉ định như trong makelist (loại,
chuỗi mặt nạ).

o int printf (...)
Hiển thị tất cả các đối số (được phân tách bằng dấu phẩy) ra màn hình (tức là luồng đầu ra tiêu chuẩn).
Trả về số lượng đối số được in.

o int printf (chuỗi định dạng, ...)
Hiển thị tất cả các đối số (được phân tách bằng dấu phẩy) ra màn hình (tức là luồng đầu ra tiêu chuẩn).
Trả về số lượng đối số được in ( định dạng chuỗi được tính là một đối số).

If định dạng chứa phần giữ chỗ% 1 ..% n đầu ra được định dạng (xem thêm
định dạng str).

o int putenv (chuỗi envvar)
Thêm envvar đến hiện tại (imake) môi trường Sử dụng định dạng: "VAR = value".
Trả về 0.

o chuỗi thay đổi kích thước (chuỗi đường, int sức mạnh mới) Trả về một bản sao của chuỗi str, đã thay đổi kích thước thành
sức mạnh mới nhân vật. Nếu như sức mạnh mới là số âm thì một chuỗi trống được trả về,
if sức mạnh mới vượt quá str's độ dài thì các ký tự mới được thêm vào được khởi tạo
để trống.

o int sizeof (danh sách l)
Không được chấp nhận: sử dụng bơ phờ.

o int sizeoflist (danh sách l)
Không được chấp nhận: sử dụng bơ phờ.

o stat (chuỗi lối vào)
Trả hàng stat(2) thông tin của mục nhập thư mục nhập như một danh sách. Danh sách trả lại
có hai phần tử: phần tử 0 là thuộc tính giá trị, phần tử 1 chứa kích thước của
tập tin.

Các thuộc tính được trả về dưới dạng cờ bit, được cấu tạo từ các thuộc tính được xác định trước sau
hằng số:

S_IFCHR S_IFDIR S_IFREG
S_IREAD S_IWRITE S_IEXEC

Xem stat(2) trang hướng dẫn sử dụng cho ý nghĩa của các hằng số này.

o stat (kiểm tra, chuỗi lối vào)
Tương tự như chức năng trước đó, nhưng bằng cách chỉ định kiểm tra as P_NOCHECK chức năng
sẽ không kết thúc tập lệnh. Đúng hơn, nó trở lại stat(2) của giá trị trả về.

o int strchr (chuỗi đường, chuỗi ký tự)
Trả về chỉ mục đầu tiên trong str nơi bất kỳ ký tự nào trong xe tăng được tìm thấy, hoặc -1
if str không chứa bất kỳ ký tự nào trong xe tăng.

o int strlen (chuỗi str)
Trả về số ký tự trong str (không tính số 0 cuối cùng).

o int strfind (chuỗi đống cỏ khô, chuỗi cây kim)
Trả về chỉ mục trong đống cỏ khô Ở đâu cây kim được tìm thấy hoặc -1 nếu cây kim không chứa
in đống cỏ khô.
T chức năng gọi là strstr () in phiên bản trước 7.00.

o int strformat (chuỗi định dạng,...)
Trả về một chuỗi được định dạng bằng cách sử dụng phần giữ chỗ% 1 ..% 2 để giải quyết các đối số
định dạng sau.
Ví dụ:

void main ()
{
int tôi = 10;
int j = 20;
chuỗi s1;
chuỗi s2;
// cách tiếp cận truyền thống:
s1 = (string) i + "" + (string) j + "" + (string) i;
// sử dụng strformat:
s2 = strformat ("% 1% 2% 1", i, j);
printf ("s1 =% 1, s2 =% 2 \ n", s1, s2);
}

o chuỗi strlwr (chuỗi s)
Trả về một bản sao chữ thường của s.

o strtok (chuỗi đường, chuỗi dải phân cách)
Trả về danh sách chứa tất cả các chuỗi con của str cách nhau một hoặc nhiều
(liên tiếp) các ký tự trong dải phân cách. Ví dụ, strtok ("xin chào icmake's + thế giới ", " + ")
trả về danh sách chứa ba chuỗi "xin chào", "icmake's""thế giới".

o chuỗi strupr (chuỗi s)
Trả về một bản sao chữ hoa của s.

o chuỗi substr (chuỗi văn bản, int bù lại, int đếm)
Trả về một chuỗi con của văn bản, Bắt đầu từ bù đắp, bao gồm tính nhân vật. Nếu như
bù đắp vượt quá (hoặc bằng) kích thước của chuỗi hoặc nếu tính <= 0, sau đó là một chuỗi trống
Được trả lại. Nếu như bù đắp nhỏ hơn 0 thì 0 được sử dụng.

o int hệ thống (chuỗi chỉ huy)
Thi công lệnh. Giá trị trả về cho biết giá trị thoát của lệnh được thực thi. Các
chuỗi lệnh có thể chứa các ký tự chuyển hướng và / hoặc đường ống.

o int hệ thống (int kiểm tra, chuỗi chỉ huy)
Chức năng tương tự như chức năng trước đó, nhưng bằng cách chỉ định kiểm tra as
CHƯA ĐƯỢC KIỂM TRA hàm sẽ không kết thúc tập lệnh. Thay vào đó, nó sẽ trả về
được gọi là trạng thái thoát của lệnh, hoặc 0x7f00 nếu lệnh không được tìm thấy.

o chuỗi trim (chuỗi s)
Trả lại bản sao của s không có khoảng trắng đầu và cuối.

o chuỗi trimleft (chuỗi str)
Trả lại bản sao của s không có khoảng trắng hàng đầu.

o chuỗi trim (chuỗi s)
Trả lại bản sao của s không có khoảng trắng theo sau.

USER ĐỊNH NGHĨA CHỨC NĂNG


làm mất hiệu lực chính

imake tập lệnh phải được cung cấp với một chức năng do người dùng xác định chính. Chức năng chính
ba tham số tùy chọn, có thể bị bỏ qua trong tham số cuối cùng (envp) đầu tiên
(argc), giống như trong C. Nguyên mẫu đầy đủ của nó là (lưu ý: làm mất hiệu lực loại trả lại):

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

In chủ yếu(),

o argc đại diện cho số phần tử trong argv;

o argv chứa các đối số, với phần tử 0 bằng tên của .bim
tập tin;

o envp chứa các biến môi trường. Chức năng bơ phờ có thể được sử dụng để
xác định số phần tử của nó. Các yếu tố trong envp có hình thức
biến = giá trị. Ngoài ra, chức năng getenv có thể được sử dụng để lấy một
biến môi trường cụ thể ngay lập tức. Thí dụ:

void main (int argc, list argv)
{
danh sách để biên dịch;
int idx;

nếu (argc == 1)
cách sử dụng (phần tử (0, argv));

if (toCompile = altered ("*. cc"))
{
for (idx = length (toCompile); idx--;)
biên dịch (phần tử (idx, toCompile));

if (getenv ("dryrun") [0] == "0")
liên kết (phần tử (2, argv));
}
}

Đã khởi tạo tất cả các biến toàn cục theo thứ tự định nghĩa của chúng chính được gọi bởi
imakehệ thống hỗ trợ thời gian chạy để thực hiện các nhiệm vụ bổ sung.

Ngoài ra xác định người sử dụng chức năng

Các chức năng bổ sung có thể được xác định. Sau khi được định nghĩa, các hàm này có thể được gọi. Phía trước
tham chiếu đến các biến hoặc hàm không được hỗ trợ, nhưng gọi đệ quy
các chức năng là. Vì khai báo hàm không được hỗ trợ nên đệ quy gián tiếp không
được hỗ trợ.

Các hàm do người dùng xác định phải có các yếu tố sau:

o Kiểu trả về của hàm, phải là một trong các vô hiệu, NS, chuỗi or . Ở đó
không phải là loại mặc định.

o Tên của hàm, ví dụ: biên dịch.

o Một danh sách tham số, xác định không hoặc nhiều tham số được phân tách bằng dấu phẩy. Những thông số
bản thân chúng bao gồm một tên loại (NS, chuỗi, hoặc là ) tiếp theo là
định danh của tham số. Ví dụ, (dây ô uế, chuỗi nguồn).

o Một thân hình được bao quanh bởi một cặp dấu ngoặc nhọn ({}).

Các thân hàm có thể chứa các định nghĩa biến (được khởi tạo tùy chọn). Biến đổi
định nghĩa bắt đầu bằng tên loại, theo sau là một hoặc nhiều dấu phẩy được phân tách (tùy chọn
khởi tạo) định danh biến. Nếu một biến không được khởi tạo rõ ràng, nó sẽ là
được khởi tạo theo mặc định. Theo mặc định, một int biến được khởi tạo thành 0, a chuỗi is
được khởi tạo thành một chuỗi rỗng ("") Và một được khởi tạo thành một danh sách không có phần tử nào.

Ngoài các định nghĩa thay đổi, nội dung có thể chứa không hoặc nhiều câu lệnh (x.
phần LƯU KIỂM SOÁT). Lưu ý rằng các biến có thể được xác định (và được khởi tạo tùy chọn)
bất kỳ nơi nào bên trong các chức năng, và cả trong nếu, chotrong khi các câu lệnh.

Hành vi của imake-scripts sử dụng các hàm non-void không trả về giá trị không phải là
xác định.

Sử dụng icmake trực tuyến bằng các dịch vụ onworks.net


Máy chủ & Máy trạm miễn phí

Tải xuống ứng dụng Windows & Linux

Lệnh Linux

Ad