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

Ad


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

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

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

Đây là lệnh m4posix có thể được 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 giả lập trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


m4 - bộ xử lý macro

SYNOPSIS


m4 [−s] [−D tên[=val]]hữu ích. Cảm ơn ! [−U tên]hữu ích. Cảm ơn ! hồ sơhữu ích. Cảm ơn !

MÔ TẢ


Sản phẩm m4 tiện ích là một bộ xử lý macro sẽ đọc một hoặc nhiều tệp văn bản, xử lý chúng
theo các câu lệnh macro được bao gồm và ghi kết quả vào đầu ra tiêu chuẩn.

LỰA CHỌN


Sản phẩm m4 tiện ích sẽ phù hợp với khối lượng Định nghĩa cơ sở của POSIX.1‐2008, Phần 12.2,
Tiện ích cú pháp Hướng dẫn, ngoại trừ thứ tự của −D−U các lựa chọn sẽ là
đáng kể, và các tùy chọn có thể được xen kẽ với các toán hạng.

Các tùy chọn sau sẽ được hỗ trợ:

−s Bật đầu ra đồng bộ hóa dòng cho c99 giai đoạn tiền xử lý (nghĩa là
#hàng chỉ thị).

−D tên[=val]
Định nghĩa tên đến val hoặc null nếu =val bị bỏ qua.

−U tên Không xác định tên.

TOÁN HẠNG


Toán hạng sau sẽ được hỗ trợ:

hồ sơ Tên đường dẫn của tệp văn bản sẽ được xử lý. Nếu không hồ sơ được đưa ra, hoặc nếu nó được '-',
đầu vào tiêu chuẩn phải được đọc.

STDIN


Đầu vào tiêu chuẩn phải là một tệp văn bản được sử dụng nếu không hồ sơ toán hạng được đưa ra, hoặc nếu nó
is '-'.

ĐẦU VÀO CÁC TẬP TIN


Tệp đầu vào được đặt tên bởi hồ sơ toán hạng sẽ là một tệp văn bản.

MÔI TRƯỜNG BIẾN


Các biến môi trường sau đây sẽ ảnh hưởng đến việc thực hiện m4:

NGÔN NGỮ Cung cấp giá trị mặc định cho các biến quốc tế hóa chưa được đặt hoặc
vô giá trị. (Xem tập Định nghĩa cơ bản của POSIX.1‐2008, Phần 8.2,
quốc tế hóa Biến ưu tiên quốc tế hóa
các biến được sử dụng để xác định giá trị của danh mục ngôn ngữ.)

LC_ALL Nếu được đặt thành giá trị chuỗi không trống, hãy ghi đè giá trị của tất cả các chuỗi khác
các biến quốc tế hóa.

LC_CTYPE Xác định ngôn ngữ để diễn giải chuỗi byte dữ liệu văn bản
dưới dạng ký tự (ví dụ: byte đơn trái ngược với ký tự nhiều byte trong
đối số và tệp đầu vào).

LC_MESSAGES
Xác định ngôn ngữ sẽ được sử dụng để ảnh hưởng đến định dạng và nội dung của
thông báo chẩn đoán được ghi vào lỗi tiêu chuẩn.

NLSPATH Xác định vị trí của danh mục thư để xử lý LC_MESSAGES.

BẤT NGỜ SỰ KIỆN


Mặc định.

GIỚI THIỆU


Đầu ra tiêu chuẩn sẽ giống như các tệp đầu vào, sau khi được xử lý cho macro
sự bành trướng.

STDERR


Lỗi tiêu chuẩn sẽ được sử dụng để hiển thị các chuỗi với sai sót macro, theo dõi macro
được kích hoạt bởi dấu vết macro, văn bản được xác định cho macro được viết bởi bãi rác macro, hoặc
cho các thông báo chẩn đoán.

OUTPUT CÁC TẬP TIN


Không có.

ĐA THẾ HỆ MÔ TẢ


Sản phẩm m4 tiện ích sẽ so sánh từng mã thông báo từ đầu vào với tập hợp tích hợp sẵn và
macro do người dùng xác định. Nếu mã thông báo khớp với tên của macro, thì mã thông báo sẽ là
được thay thế bằng văn bản xác định của macro, nếu có và được quét lại để tìm tên macro phù hợp.
Khi không có phần nào của mã thông báo khớp với tên của macro, nó sẽ được ghi theo tiêu chuẩn
đầu ra. Macro có thể có các đối số, trong trường hợp đó, các đối số sẽ được thay thế thành
văn bản xác định trước khi nó được quét lại.

Các lệnh gọi macro có dạng:

tên(arg1, arg2, ..., tranh luận)

Tên macro phải bao gồm các chữ cái, chữ số và dấu gạch dưới, trong đó ký tự đầu tiên
không phải là một chữ số. Các mã không thuộc dạng này sẽ không được coi là macro.

Ứng dụng sẽ đảm bảo rằng ngay sau tên của
macro. Nếu mã thông báo khớp với tên của macro thì không được theo sau bởi
ngoặc đơn>, nó được xử lý như một cách sử dụng macro đó mà không có đối số.

Nếu tên macro được theo sau bởi , các đối số của nó là
-các mã thông báo riêng biệt giữa và sự phù hợp
dấu ngoặc>. Các ký tự khoảng trắng chưa được trích dẫn trước mỗi đối số sẽ bị bỏ qua.
Tất cả các ký tự khác, bao gồm cả các ký tự khoảng trắng ở cuối, đều được giữ lại.
ký tự bao quanh và ký tự không
phân tách các đối số.

Các đối số được xác định theo vị trí và được tham chiếu. Chuỗi "$ 1" trong văn bản xác định
sẽ được thay thế bằng đối số đầu tiên. Hệ thống phải hỗ trợ ít nhất chín đối số;
chỉ chín đầu tiên có thể được tham chiếu, sử dụng các chuỗi "$ 1" đến "$ 9", bao gồm. Các
chuỗi "$ 0" được thay thế bằng tên của macro. Chuỗi "$ #" được thay thế bởi
số đối số dưới dạng một chuỗi. Chuỗi "$ *" được thay thế bằng một danh sách tất cả các
các đối số, được phân tách bằng nhân vật. Chuỗi "$ @" được thay thế bằng một danh sách tất cả
trong số các đối số được phân tách bằng và mỗi đối số được trích dẫn bằng cách sử dụng
các chuỗi trích dẫn bên trái và bên phải hiện tại. Chuỗi "$ {" tạo ra hành vi không xác định.

Nếu cung cấp ít đối số hơn trong định nghĩa macro, thì đối số sẽ bị bỏ qua
được coi là null. Nó không phải là một lỗi nếu nhiều đối số được cung cấp hơn là trong
định nghĩa vĩ mô.

Không có ý nghĩa đặc biệt nào được đưa ra cho bất kỳ ký tự nào nằm giữa khớp bên trái và bên phải
các chuỗi trích dẫn, nhưng các chuỗi trích dẫn tự bị loại bỏ. Theo mặc định, bên trái
chuỗi trích dẫn bao gồm trọng âm (backquote) và chuỗi trích dẫn bên phải
bao gồm một trọng âm (dấu ngoặc kép); cũng xem thay đổi trích dẫn vĩ mô.

Nhận xét được viết nhưng không được quét để tìm các tên macro phù hợp; theo mặc định, bắt đầu-
chuỗi nhận xét bao gồm ký tự và chuỗi chú thích cuối bao gồm
của một . Xem thêm thay đổikhông macro.

Sản phẩm m4 tiện ích sẽ cung cấp các macro tích hợp sau. Chúng có thể được định nghĩa lại,
nhưng một khi điều này được thực hiện, ý nghĩa ban đầu sẽ bị mất. Giá trị của chúng sẽ không có giá trị nào trừ khi
nói cách khác. Trong phần mô tả bên dưới, thuật ngữ xác định văn bản đề cập đến giá trị của
macro: đối số thứ hai cho định nghĩa vĩ mô, trong số những thứ khác. Ngoại trừ
đối số đầu tiên cho đánh giá macro, tất cả các đối số dạng số cho macro cài sẵn sẽ là
được hiểu là các giá trị thập phân. Các giá trị chuỗi được tạo ra dưới dạng văn bản xác định của
quyết định, bói, gia tăng, chỉ số, lenhệ thống các macro cài sẵn sẽ có dạng
hằng số thập phân như được định nghĩa trong ngôn ngữ C.

thay đổi Sản phẩm thay đổi macro sẽ thiết lập các chuỗi nhận xét bắt đầu và nhận xét kết thúc. Với không
đối số, cơ chế bình luận sẽ bị vô hiệu hóa. Với một non-null
đối số, đối số đó sẽ trở thành bình luận bắt đầu và nên
trở thành chuỗi chú thích cuối. Với hai đối số không rỗng, đối số đầu tiên
sẽ trở thành chuỗi chú thích bắt đầu và đối số thứ hai sẽ trở thành
chuỗi chú thích cuối. Hành vi không được xác định nếu một trong hai đối số được cung cấp
nhưng rỗng. Hệ thống phải hỗ trợ các chuỗi nhận xét có ít nhất năm ký tự.

thay đổi trích dẫn
Sản phẩm thay đổi trích dẫn macro sẽ thiết lập các chuỗi dấu ngoặc kép đầu và dấu ngoặc kép kết thúc. Với không
các đối số, các chuỗi trích dẫn sẽ được đặt thành các giá trị mặc định (nghĩa là, '').
Hành vi không được xác định nếu có một đối số duy nhất hoặc một trong hai đối số là
vô giá trị. Với hai đối số không rỗng, đối số đầu tiên sẽ trở thành bắt đầu-
chuỗi trích dẫn và đối số thứ hai sẽ trở thành chuỗi dấu ngoặc kép. Hệ thống
sẽ hỗ trợ các chuỗi trích dẫn có ít nhất năm ký tự.

quyết định Văn bản xác định của quyết định macro sẽ là đối số đầu tiên của nó giảm dần bởi
1. Sẽ là một lỗi nếu chỉ định một đối số chứa bất kỳ đối số nào không phải là số
nhân vật. Hành vi không được xác định nếu quyết định không được theo sau ngay lập tức
Một .

định nghĩa Đối số thứ hai sẽ trở thành văn bản xác định của macro có tên là
đối số đầu tiên. Không xác định được liệu định nghĩa macro xóa tất cả trước đó
định nghĩa của macro được đặt tên bởi đối số đầu tiên của nó hoặc giữ nguyên tất cả ngoại trừ
định nghĩa hiện tại của macro. Hành vi không được xác định nếu định nghĩa không phải là
ngay sau đó là một .

định nghĩa Văn bản xác định của định nghĩa macro sẽ là định nghĩa được trích dẫn (sử dụng
các chuỗi trích dẫn hiện tại) của các đối số của nó. Hành vi không được xác định nếu định nghĩa
không được theo sau ngay lập tức bởi một .

chuyển hướng Sản phẩm m4 tiện ích duy trì chín bộ đệm tạm thời, được đánh số từ 1 đến 9, bao gồm cả.
Khi phần cuối cùng của đầu vào đã được xử lý, bất kỳ đầu ra nào đã được đặt
trong các bộ đệm này sẽ được ghi vào đầu ra tiêu chuẩn theo thứ tự số đệm.
Sản phẩm chuyển hướng macro sẽ chuyển hướng đầu ra trong tương lai đến bộ đệm được chỉ định bởi
tranh luận. Chỉ định không có đối số hoặc đối số 0 sẽ tiếp tục bình thường
quy trình đầu ra. Đầu ra được chuyển hướng thành một luồng có số âm phải là
bỏ đi. Hành vi được xác định triển khai nếu số luồng lớn hơn 9
được quy định. Sẽ là một lỗi nếu chỉ định một đối số chứa bất kỳ
các ký tự số.

bói Văn bản xác định của bói macro sẽ là số đầu ra hiện tại
dòng dưới dạng một chuỗi.

không Sản phẩm không vĩ mô sẽ gây ra m4 để loại bỏ tất cả các ký tự đầu vào cho đến và bao gồm
tiếp theo .

bãi rác Sản phẩm bãi rác macro sẽ ghi văn bản được xác định thành lỗi tiêu chuẩn cho mỗi
macro được chỉ định làm đối số hoặc, nếu không có đối số nào được chỉ định, cho tất cả
macro.

sai sót Sản phẩm sai sót macro sẽ ghi các đối số của nó thành lỗi chuẩn. Hành vi là
không xác định nếu sai sót không được theo sau ngay lập tức bởi một .

đánh giá Sản phẩm đánh giá macro sẽ đánh giá đối số đầu tiên của nó như một biểu thức số học,
sử dụng số học số nguyên có dấu với độ chính xác ít nhất 32 bit. Ít nhất
các toán tử ngôn ngữ C sau sẽ được hỗ trợ, ưu tiên,
sự kết hợp và hành vi như được mô tả trong Phần 1.1.2.1, toán học
Độ chính xác Hoạt động:

()
một ngôi +
một ngôi -
~

!
nhị phân *
/
%
nhị phân +
nhị phân -
<<
>>
<
<=
>
>=
==
!=
nhị phân &
^
|
&&
||

Hệ thống phải hỗ trợ số bát phân và số thập lục phân như trong tiêu chuẩn ISO C.
Đối số thứ hai, nếu được chỉ định, sẽ đặt cơ số cho kết quả; nếu
đối số trống hoặc không xác định, mặc định là 10. Hành vi không xác định nếu
cơ số nằm ngoài phạm vi từ 2 đến 36, bao gồm cả. Đối số thứ ba, nếu
được chỉ định, đặt số chữ số tối thiểu trong kết quả. Hành vi là
không xác định nếu đối số thứ ba nhỏ hơn XNUMX. Nó sẽ là một lỗi cho
chỉ định đối số thứ hai hoặc thứ ba chứa bất kỳ ký tự không phải số nào. Các
hành vi không xác định nếu đánh giá không được theo sau ngay lập tức bởi một
dấu ngoặc>.

ifdef Nếu đối số đầu tiên cho ifdef macro được xác định, văn bản xác định sẽ là
đối số thứ hai. Nếu không, văn bản xác định sẽ là đối số thứ ba,
nếu được chỉ định hoặc chuỗi null, nếu không. Hành vi không được xác định nếu ifdef
không được theo sau ngay lập tức bởi một .

nếu khác Sản phẩm nếu khác macro có từ ba đối số trở lên. Nếu hai đối số đầu tiên
so sánh dưới dạng các chuỗi bằng nhau (sau khi mở rộng macro của cả hai đối số), việc xác định
văn bản sẽ là đối số thứ ba. Nếu hai đối số đầu tiên không so sánh như
các chuỗi bằng nhau và có ba đối số, văn bản xác định sẽ không có giá trị. Nếu như
hai đối số đầu tiên không so sánh dưới dạng các chuỗi bằng nhau và có bốn hoặc
năm đối số, văn bản xác định sẽ là đối số thứ tư. Nếu hai đầu
các đối số không so sánh dưới dạng các chuỗi bằng nhau và có sáu đối số trở lên,
ba đối số đầu tiên sẽ bị loại bỏ và quá trình xử lý sẽ bắt đầu lại với
các đối số còn lại. Hành vi không được xác định nếu nếu khác không phải là
ngay sau đó là một .

bao gồm Văn bản xác định cho bao gồm macro sẽ là nội dung của tệp có tên
bởi đối số đầu tiên. Sẽ là một lỗi nếu tệp không thể đọc được. Các
hành vi không xác định nếu bao gồm không được theo sau ngay lập tức bởi một
dấu ngoặc>.

gia tăng Văn bản xác định của gia tăng macro sẽ là đối số đầu tiên của nó được tăng lên bởi
1. Sẽ là một lỗi nếu chỉ định một đối số chứa bất kỳ đối số nào không phải là số
nhân vật. Hành vi không được xác định nếu gia tăng không được theo sau ngay lập tức
Một .

chỉ số Văn bản xác định của chỉ số macro sẽ là vị trí ký tự đầu tiên (như một
string) trong đối số đầu tiên bắt đầu một chuỗi khớp với đối số thứ hai
(gốc 1), hoặc −XNUMX nếu đối số thứ hai không xảy ra. Hành vi là
không xác định nếu chỉ số không được theo sau ngay lập tức bởi một .

len Văn bản xác định của len macro phải là độ dài (dưới dạng một chuỗi) của
đối số đầu tiên. Hành vi không được xác định nếu len không được theo dõi ngay lập tức
bởi một .

m4 thoát Thoát khỏi m4 tính thiết thực. Nếu đối số đầu tiên được chỉ định, nó là lối ra
mã số. Giá trị mặc định là XNUMX. Sẽ là một lỗi nếu chỉ định một đối số
chứa bất kỳ ký tự không phải số nào.

m4wrap Đối số đầu tiên sẽ được xử lý khi đạt đến EOF. Nếu m4wrap vĩ mô
được sử dụng nhiều lần, các đối số được chỉ định sẽ được xử lý theo thứ tự
trong đó m4wrap macro đã được xử lý. Hành vi không được xác định nếu m4wrap
không được theo sau ngay lập tức bởi một .

tạm thời Văn bản xác định sẽ là đối số đầu tiên, với bất kỳ dấu 'NS' nhân vật
được thay thế bằng ID quy trình hiện tại dưới dạng một chuỗi. Hành vi không xác định
if tạm thời không được theo sau ngay lập tức bởi một .

mkstemp Đối số đầu tiên sẽ được lấy làm khuôn mẫu để tạo một tệp trống, với
dấu 'NS' các ký tự được thay thế bằng các ký tự từ tên tệp di động
bộ ký tự. Hành vi không được xác định nếu đối số đầu tiên không kết thúc bằng
ít nhất sáu 'NS' nhân vật. Nếu một tệp tạm thời được tạo thành công, thì
văn bản xác định của macro sẽ là tên của tệp mới. ID người dùng
của tệp sẽ được đặt thành ID người dùng hiệu quả của quá trình. ID nhóm
của tệp sẽ được đặt thành ID nhóm của thư mục mẹ của tệp hoặc thành
ID nhóm hiệu quả của quy trình. Các bit quyền truy cập tệp được thiết lập
sao cho chỉ chủ sở hữu mới có thể đọc và ghi tệp, bất kể
hiện hành cái ô của quy trình. Nếu không thể tạo tệp, văn bản xác định
của macro sẽ là chuỗi trống. Hành vi không được xác định nếu mkstemp
không được theo sau ngay lập tức bởi một .

popdef Sản phẩm popdef macro sẽ xóa định nghĩa hiện tại của các đối số của nó, thay thế
định nghĩa đó với định nghĩa trước đó. Nếu không có định nghĩa trước đó,
macro là không xác định. Hành vi không được xác định nếu popdef không phải là ngay lập tức
Theo sau là một .

pushdef Sản phẩm pushdef macro sẽ tương đương với định nghĩa macro với ngoại lệ
rằng nó sẽ duy trì bất kỳ định nghĩa hiện tại nào để truy xuất trong tương lai bằng cách sử dụng
popdef vĩ mô. Hành vi không được xác định nếu pushdef không được theo dõi ngay lập tức
bởi một .

thay đổi Văn bản xác định cho thay đổi macro sẽ là một danh sách được phân tách bằng dấu phẩy của nó
đối số ngoại trừ đối số đầu tiên. Mỗi đối số sẽ được trích dẫn bằng cách sử dụng dòng điện
trích dẫn chuỗi. Hành vi không được xác định nếu thay đổi không phải là ngay lập tức
Theo sau là một .

bao gồm Sản phẩm bao gồm macro sẽ tương đương với bao gồm macro, ngoại trừ nó
sẽ không phải là một lỗi nếu tệp không thể truy cập được. Hành vi không xác định
if bao gồm không được theo sau ngay lập tức bởi một .

chất nền Văn bản xác định cho chất nền macro sẽ là chuỗi con của chuỗi đầu tiên
đối số bắt đầu ở vị trí ký tự có độ lệch XNUMX được chỉ định bởi thứ hai
tranh luận. Đối số thứ ba, nếu được chỉ định, sẽ là số ký tự để
lựa chọn; nếu không được chỉ định, các ký tự từ điểm bắt đầu đến cuối
đối số đầu tiên sẽ trở thành văn bản xác định. Sẽ không có lỗi đối với
chỉ định điểm bắt đầu sau điểm kết thúc của đối số đầu tiên và xác định
văn bản sẽ trống. Sẽ là một lỗi nếu chỉ định một đối số chứa bất kỳ
ký tự không phải số. Hành vi không được xác định nếu chất nền không phải là
ngay sau đó là một .

syscmd Sản phẩm syscmd macro sẽ diễn giải đối số đầu tiên của nó dưới dạng một dòng lệnh shell. Các
văn bản xác định sẽ là kết quả chuỗi của lệnh đó. Kết quả chuỗi
sẽ không được quét lại các macro trong khi thiết lập văn bản xác định. Không có đầu ra
chuyển hướng sẽ được thực hiện bởi m4 tính thiết thực. Giá trị trạng thái thoát khỏi
lệnh có thể được truy xuất bằng cách sử dụng hệ thống vĩ mô. Hành vi không được xác định nếu
syscmd không được theo sau ngay lập tức bởi một .

hệ thống Văn bản xác định của hệ thống macro sẽ là giá trị thoát của tiện ích
lần cuối cùng được gọi bởi syscmd macro (dưới dạng một chuỗi).

dấu vết Sản phẩm dấu vết macro sẽ cho phép theo dõi các macro được chỉ định dưới dạng đối số,
hoặc, nếu không có đối số nào được chỉ định, cho tất cả các macro. Đầu ra theo dõi sẽ là
được ghi thành lỗi tiêu chuẩn ở định dạng không xác định.

dấu vết Sản phẩm dấu vết macro sẽ vô hiệu hóa tính năng theo dõi đối với các macro được chỉ định làm đối số,
hoặc, nếu không có đối số nào được chỉ định, cho tất cả các macro.

dịch thuật Văn bản xác định của dịch thuật macro sẽ là đối số đầu tiên với mọi
ký tự xuất hiện trong đối số thứ hai được thay thế bằng ký tự tương ứng
ký tự từ đối số thứ ba. Nếu không có ký tự thay thế nào được chỉ định cho
một số ký tự nguồn vì đối số thứ hai dài hơn đối số thứ ba
đối số, ký tự đó sẽ bị xóa khỏi đối số đầu tiên trong dịch thuật's
xác định văn bản. Hành vi không được xác định nếu '-' nhân vật xuất hiện trong
đối số thứ hai hoặc thứ ba ở bất kỳ đâu ngoài ký tự đầu tiên hoặc cuối cùng. Các
hành vi không được xác định nếu cùng một ký tự xuất hiện nhiều lần trong
đối số thứ hai. Hành vi không được xác định nếu dịch thuật không phải là ngay lập tức
Theo sau là một .

không xác định Sản phẩm không xác định macro sẽ xóa tất cả các định nghĩa (bao gồm cả những định nghĩa được bảo tồn bằng cách sử dụng
các pushdef macro) của các macro được đặt tên theo các đối số của nó. Hành vi là
không xác định nếu không xác định không được theo sau ngay lập tức bởi một .

không đổi hướng Sản phẩm không đổi hướng macro sẽ tạo ra đầu ra ngay lập tức của bất kỳ văn bản nào trong bộ đệm tạm thời
được đặt tên là các đối số hoặc tất cả các bộ đệm tạm thời nếu không có đối số nào được chỉ định.
Bộ đệm có thể được hoàn nguyên thành bộ đệm tạm thời khác. Undiverting sẽ
loại bỏ nội dung của bộ đệm tạm thời. Hành vi không được xác định nếu một
đối số chứa bất kỳ ký tự không phải số nào.

EXIT TÌNH TRẠNG


Các giá trị thoát sau sẽ được trả về:

0 Hoàn thành thành công.

> 0 Đã xảy ra lỗi

Nếu m4 thoát macro được sử dụng, giá trị thoát có thể được chỉ định bởi tệp đầu vào.

HẬU QUẢ OF LRI


Mặc định.

Sản phẩm tiếp theo phần đang nhiều thông tin.

ỨNG DỤNG SỬ DỤNG


Sản phẩm định nghĩa macro rất hữu ích để đổi tên các macro, đặc biệt là các macro được tích hợp sẵn.

từ đánh giá xác định theo tiêu chuẩn ISO C, một số hoạt động có hành vi không xác định. Trong một số
triển khai, phép chia hoặc phần dư bằng XNUMX gây ra tín hiệu nguy hiểm, ngay cả khi phép chia
xảy ra trên nhánh ngắn mạch của "&&" or "||". Bất kỳ hoạt động nào tràn vào
số học có dấu tạo ra hành vi không xác định. Tương tự như vậy, bằng cách sử dụng thay đổi toán tử với một
số lượng dịch chuyển không phải là số dương và nhỏ hơn độ chính xác là không xác định, như là
dịch chuyển một số âm sang phải. Trong lịch sử, không phải tất cả các triển khai đều tuân theo C-
quy tắc ưu tiên ngôn ngữ: '~''!' thấp hơn so với '=='; '==''! =' không thấp hơn
hơn '<'; Và '|' không thấp hơn '^'; việc sử dụng tự do "()" có thể ép buộc
ưu tiên ngay cả với các triển khai không tuân thủ này. Hơn nữa, một số
triển khai được xử lý '^' như một toán tử lũy thừa, mặc dù hầu hết các triển khai
bây giờ sử dụng "**" như một phần mở rộng cho mục đích này.

Khi một macro đã được nhân được xác định thông qua pushdef macro, không xác định được liệu
các định nghĩa macro sẽ chỉ thay đổi định nghĩa gần đây nhất (như thể bằng cách popdef
pushdef), hoặc thay thế toàn bộ chồng định nghĩa bằng một định nghĩa duy nhất (như thể
by không xác địnhpushdef). Một ứng dụng mong muốn hành vi cụ thể cho định nghĩa
macro trong trường hợp này có thể xác định lại nó cho phù hợp.

Các ứng dụng nên sử dụng mkstemp macro thay vì lỗi thời tạm thời macro cho
tạo tệp tạm thời.

VÍ DỤ


Nếu tệp m4src chứa các dòng:

Sản phẩm giá trị of `VER ' is "VER".
ifdef (`` VER ', `` VER '' is xác định đến be VER., VER is không được xác định.)
ifelse (VER, 1, `` VER '' is `VER '.)
ifelse (VER, 2, `` VER '' is `VER '., `` VER '' is không 2).
cuối

sau đó là lệnh

m4 m4src

hoặc lệnh:

m4 −U VER m4src

tạo ra đầu ra:

Sản phẩm giá trị of VER is "VER".
VER is không xác định.

VER không phải là 2.
cuối

Lệnh:

m4 −D VER m4src

tạo ra đầu ra:

Sản phẩm giá trị of VER is "".
VER is xác định đến be .

VER không phải là 2.
cuối

Lệnh:

m4 −D VER = 1 m4src

tạo ra đầu ra:

Sản phẩm giá trị of VER is "1/XNUMX/XNUMX".
VER is xác định đến be 1.
VER is 1.
VER is không 2.
cuối

Lệnh:

m4 −D VER = 2 m4src

tạo ra đầu ra:

Sản phẩm giá trị of VER is "2/XNUMX/XNUMX".
VER is xác định đến be 2.

VER là 2.
cuối

CƠ SỞ LÝ LUẬN


Hành vi dựa trên Hệ thống lịch sử V được xử lý "$ {" trong một định nghĩa macro là hai chữ
nhân vật. Tuy nhiên, trình tự này không được chỉ định để các triển khai có thể cung cấp
phần mở rộng chẳng hạn như "$ {11}" nghĩa là tham số vị trí thứ mười một. Macro vẫn có thể
được xác định với cách sử dụng thích hợp của trích dẫn lồng nhau để dẫn đến một chữ "$ {" trong đầu ra
sau khi quét lại loại bỏ các dấu ngoặc kép lồng nhau.

Trong tạp chí dịch thuật hành vi dựa trên Hệ thống V lịch sử, tích hợp được xử lý '-' như một nghĩa đen; GNU
hành vi coi nó như một phạm vi. Phiên bản này của tiêu chuẩn cho phép một trong hai hành vi.

TƯƠNG LAI HƯỚNG DẪN


Không có.

Sử dụng m4posix 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

  • 1
    Máy pha
    Máy pha
    Phaser là một công cụ mở nhanh, miễn phí và thú vị
    nguồn HTML5 trò chơi khung cung cấp
    Hiển thị WebGL và Canvas trên
    trình duyệt web trên máy tính để bàn và thiết bị di động. Trò chơi
    có thể được đồng ...
    Tải xuống Phaser
  • 2
    Động cơ VASSAL
    Động cơ VASSAL
    VASSAL là một công cụ trò chơi để tạo
    phiên bản điện tử của bảng truyền thống
    và các trò chơi bài. Nó cung cấp hỗ trợ cho
    kết xuất và tương tác mảnh trò chơi,
    và ...
    Tải xuống Công cụ VASSAL
  • 3
    OpenPDF - Ngã ba của iText
    OpenPDF - Ngã ba của iText
    OpenPDF là một thư viện Java để tạo
    và chỉnh sửa các tệp PDF bằng LGPL và
    Giấy phép nguồn mở MPL. OpenPDF là
    Mã nguồn mở LGPL/MPL kế thừa của iText,
    có ...
    Tải xuống OpenPDF - Một nhánh của iText
  • 4
    SAGA GIS
    SAGA GIS
    SAGA - Hệ thống tự động
    Phân tích khoa học địa lý - là một địa lý
    Phần mềm Hệ thống Thông tin (GIS) với
    khả năng to lớn cho dữ liệu địa lý
    chế biến và ana ...
    Tải xuống SAGA GIS
  • 5
    Hộp công cụ cho Java / JTOpen
    Hộp công cụ cho Java / JTOpen
    Hộp công cụ IBM dành cho Java/JTOpen là một
    thư viện các lớp Java hỗ trợ
    lập trình client/server và internet
    các mô hình cho một hệ thống chạy OS/400,
    i5/OS, hoặc...
    Tải xuống Hộp công cụ cho Java/JTOpen
  • 6
    D3.js
    D3.js
    D3.js (hoặc D3 cho Tài liệu hướng dữ liệu)
    là một thư viện JavaScript cho phép bạn
    để tạo dữ liệu động, tương tác
    trực quan hóa trong trình duyệt web. Với D3
    bạn...
    Tải xuống D3.js
  • Khác »

Lệnh Linux

Ad