Ini adalah perintah m4posix yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS
PROGRAM:
NAMA
m4 — prosesor makro
RINGKASAN
m4 [s] [D nama[=val]]... [U nama]... fillet...
DESKRIPSI
Grafik m4 utilitas adalah prosesor makro yang akan membaca satu atau lebih file teks, memprosesnya
sesuai dengan pernyataan makro yang disertakan, dan tulis hasilnya ke output standar.
PILIHAN
Grafik m4 utilitas harus sesuai dengan volume Definisi Dasar POSIX.1-2008, Bagian 12.2,
Kegunaan Sintaksis Panduan, kecuali bahwa urutan D dan U pilihan harus
signifikan, dan opsi dapat diselingi dengan operan.
Opsi berikut harus didukung:
s Aktifkan output sinkronisasi baris untuk c99 fase praprosesor (yaitu,
#garis arahan).
D nama[=val]
Menetapkan nama untuk val atau menjadi nol jika =val dihilangkan.
U nama tidak ditentukan nama.
OPERA
Operand berikut harus didukung:
fillet Nama path dari file teks yang akan diproses. Jika tidak fillet diberikan, atau jika '−',
input standar harus dibaca.
STDIN
Input standar adalah file teks yang digunakan jika tidak ada fillet operan diberikan, atau jika
is '−'.
INPUT FILE
File input diberi nama oleh fillet operan harus berupa file teks.
LINGKUNGAN VARIABEL
Variabel lingkungan berikut akan mempengaruhi pelaksanaan m4:
BAHASA Berikan nilai default untuk variabel internasionalisasi yang tidak disetel atau
batal. (Lihat volume Definisi Dasar dari POSIX.1-2008, Bagian 8.2,
Internasionalisasi Variabel untuk didahulukan internasionalisasi
variabel yang digunakan untuk menentukan nilai kategori lokal.)
LC_SEMUA Jika disetel ke nilai string yang tidak kosong, timpa nilai dari yang lainnya
variabel internasionalisasi.
LC_CTYPE Tentukan lokal untuk interpretasi urutan byte data teks
sebagai karakter (misalnya, byte tunggal sebagai lawan dari karakter multi-byte dalam
argumen dan file input).
LC_MESSAGES
Tentukan lokal yang harus digunakan untuk mempengaruhi format dan isi dari
pesan diagnostik yang ditulis ke kesalahan standar.
NLSPATH Tentukan lokasi katalog pesan untuk pemrosesan LC_MESSAGES.
tidak sinkron EVENT
Default
STDOUT
Output standar harus sama dengan file input, setelah diproses untuk makro
ekspansi.
STDERR
Kesalahan standar harus digunakan untuk menampilkan string dengan salah cetak makro, penelusuran makro
diaktifkan oleh jejak makro, teks yang ditentukan untuk makro yang ditulis oleh dumpdef makro, atau
untuk pesan diagnostik.
KELUARAN FILE
Tidak ada.
DITERIMA DESKRIPSI
Grafik m4 utilitas harus membandingkan setiap token dari input dengan set built-in dan
makro yang ditentukan pengguna. Jika token cocok dengan nama makro, maka token tersebut adalah
diganti dengan teks definisi makro, jika ada, dan dipindai ulang untuk mencocokkan nama makro.
Setelah tidak ada bagian dari token yang cocok dengan nama makro, itu harus ditulis ke standar
keluaran. Makro mungkin memiliki argumen, dalam hal ini argumen tersebut harus diganti menjadi
teks yang menentukan sebelum dipindai ulang.
Panggilan makro memiliki bentuk:
nama(argumen1, argumen2, ..., argn)
Nama makro terdiri dari huruf, angka, dan garis bawah, di mana karakter pertama
bukan angka. Token yang tidak dalam bentuk ini tidak akan diperlakukan sebagai makro.
Aplikasi harus memastikan bahwa: langsung mengikuti nama
makro. Jika token yang cocok dengan nama makro tidak diikuti oleh a
kurung>, itu ditangani sebagai penggunaan makro itu tanpa argumen.
Jika nama makro diikuti oleh , argumennya adalah
Token -dipisahkan antara dan pencocokan
kurung>. Karakter spasi putih yang tidak dikutip sebelum setiap argumen harus diabaikan.
Semua karakter lain, termasuk karakter spasi putih, dipertahankan.
karakter terlampir di antara dan karakter tidak
membatasi argumen.
Argumen didefinisikan dan direferensikan secara posisi. Tali "$ 1" dalam teks yang menentukan
diganti dengan argumen pertama. Sistem harus mendukung setidaknya sembilan argumen;
hanya sembilan yang pertama dapat direferensikan, menggunakan string "$ 1" untuk "$ 9", inklusif. NS
tali "$ 0" diganti dengan nama makro. Tali "$ #" digantikan oleh
jumlah argumen sebagai string. string "$*" digantikan oleh daftar semua
argumen, dipisahkan oleh karakter. Tali "$@" digantikan oleh daftar semua
dari argumen yang dipisahkan oleh karakter, dan setiap argumen dikutip menggunakan
string kutipan kiri dan kanan saat ini. Tali "${" menghasilkan perilaku yang tidak ditentukan.
Jika argumen yang diberikan lebih sedikit daripada yang ada dalam definisi makro, argumen yang dihilangkan
dianggap nol. Ini bukan kesalahan jika lebih banyak argumen diberikan daripada di
definisi makro.
Tidak ada arti khusus yang diberikan untuk setiap karakter yang diapit antara kiri dan kanan yang cocok
kutipan string, tetapi string kutipan itu sendiri dibuang. Secara default, kiri
string kutipan terdiri dari aksen kuburan (backquote) dan string kutipan kanan
terdiri dari aksen akut (kutipan tunggal); lihat juga perubahan kutipan makro.
Komentar ditulis tetapi tidak dipindai untuk mencocokkan nama makro; secara default, awal-
string komentar terdiri dari karakter dan string komentar akhir terdiri
dari a . Lihat juga ubahcom dan dll makro.
Grafik m4 utilitas akan menyediakan makro bawaan berikut. Mereka dapat didefinisikan ulang,
tetapi setelah ini dilakukan, makna aslinya hilang. Nilai-nilai mereka akan menjadi nol kecuali
dinyatakan lain. Dalam uraian di bawah ini, istilah mendefinisikan teks mengacu pada nilai
makro: argumen kedua untuk menetapkan makro, antara lain. Kecuali untuk
argumen pertama untuk evaluasi makro, semua argumen numerik ke makro bawaan harus
ditafsirkan sebagai nilai desimal. Nilai string yang dihasilkan sebagai teks penentu dari
dek, divnum, termasuk, indeks, len, dan sysval makro bawaan harus dalam bentuk a
desimal-konstan seperti yang didefinisikan dalam bahasa C.
ubahcom Grafik ubahcom makro akan mengatur string komentar awal dan komentar akhir. Dengan tidak
argumen, mekanisme komentar harus dinonaktifkan. Dengan satu non-null
argumen, argumen itu akan menjadi komentar awal dan sebaiknya
menjadi string komentar akhir. Dengan dua argumen non-null, argumen pertama
akan menjadi string komentar awal dan argumen kedua akan menjadi
string komentar akhir. Perilaku tidak ditentukan jika salah satu argumen diberikan
tapi nol. Sistem harus mendukung string komentar minimal lima karakter.
perubahan kutipan
Grafik perubahan kutipan makro akan mengatur string kutipan awal dan kutipan akhir. Dengan tidak
argumen, string kutipan harus diatur ke nilai default (yaitu, `').
Perilaku tidak ditentukan jika ada satu argumen atau salah satu argumen adalah
batal. Dengan dua argumen non-null, argumen pertama akan menjadi awal-
kutipan string dan argumen kedua akan menjadi string kutipan akhir. Sistem
harus mendukung string kutipan setidaknya lima karakter.
dek Teks yang menentukan dari dek makro akan menjadi argumen pertama yang dikurangi dengan
1. Ini akan menjadi kesalahan untuk menentukan argumen yang mengandung non-numerik
karakter. Perilaku tidak ditentukan jika dek tidak segera diikuti oleh
A .
menetapkan Argumen kedua akan menjadi teks definisi makro yang namanya
argumen pertama. Tidak ditentukan apakah menetapkan makro menghapus semua sebelumnya
definisi makro yang dinamai dengan argumen pertamanya atau mempertahankan semua kecuali
definisi makro saat ini. Perilaku tidak ditentukan jika menetapkan tidak
segera diikuti oleh .
defn Teks yang menentukan dari defn makro akan menjadi definisi yang dikutip (menggunakan
string kutipan saat ini) dari argumennya. Perilaku tidak ditentukan jika defn
tidak segera diikuti oleh .
mengalihkan Grafik m4 utilitas memelihara sembilan buffer sementara, nomor 1 sampai 9, inklusif.
Ketika input terakhir telah diproses, output apa pun yang telah ditempatkan
dalam buffer ini harus ditulis ke output standar dalam urutan buffer-numerik.
Grafik mengalihkan makro akan mengalihkan output masa depan ke buffer yang ditentukan olehnya
argumen. Menentukan tidak ada argumen atau argumen 0 akan melanjutkan normal
proses keluaran. Keluaran yang dialihkan ke aliran dengan angka negatif adalah:
dibuang. Perilaku ditentukan implementasi jika nomor aliran lebih besar dari 9
ditentukan. Ini akan menjadi kesalahan untuk menentukan argumen yang mengandung non-
karakter numerik.
divnum Teks yang menentukan dari divnum makro akan menjadi jumlah output saat ini
aliran sebagai string.
dll Grafik dll makro akan menyebabkan m4 untuk membuang semua karakter input hingga dan termasuk
selanjutnya .
dumpdef Grafik dumpdef makro akan menulis teks yang ditentukan ke kesalahan standar untuk masing-masing
makro yang ditentukan sebagai argumen, atau, jika tidak ada argumen yang ditentukan, untuk semua
makro.
salah cetak Grafik salah cetak makro harus menulis argumennya ke kesalahan standar. Tingkah lakunya adalah
tidak ditentukan jika salah cetak tidak segera diikuti oleh .
evaluasi Grafik evaluasi makro akan mengevaluasi argumen pertamanya sebagai ekspresi aritmatika,
menggunakan aritmatika integer bertanda dengan setidaknya presisi 32-bit. Setidaknya
operator bahasa C berikut harus didukung, dengan prioritas,
asosiatif, dan perilaku seperti yang dijelaskan dalam Bagian 1.1.2.1, Hitung
Ketelitian dan Operasi:
()
unary +
unary -
~
!
biner *
/
%
biner +
biner
<<
>>
<
<=
>
>=
==
!=
biner &
^
|
&&
||
Sistem harus mendukung bilangan oktal dan heksadesimal seperti dalam standar ISO C.
Argumen kedua, jika ditentukan, akan menetapkan radix untuk hasilnya; jika
argumen kosong atau tidak ditentukan, defaultnya adalah 10. Perilaku tidak ditentukan jika
radix berada di luar kisaran 2 hingga 36, inklusif. Argumen ketiga, jika
ditentukan, menetapkan jumlah digit minimum dalam hasil. Perilaku adalah
tidak ditentukan jika argumen ketiga kurang dari nol. Ini akan menjadi kesalahan untuk
tentukan argumen kedua atau ketiga yang berisi karakter non-numerik. NS
perilaku tidak ditentukan jika evaluasi tidak segera diikuti oleh
kurung>.
ifdef Jika argumen pertama untuk ifdef makro didefinisikan, teks yang menentukan harus
argumen kedua. Jika tidak, teks yang menentukan akan menjadi argumen ketiga,
jika ditentukan, atau string nol, jika tidak. Perilaku tidak ditentukan jika ifdef
tidak segera diikuti oleh .
jika tidak Grafik jika tidak makro membutuhkan tiga atau lebih argumen. Jika dua argumen pertama
bandingkan sebagai string yang sama (setelah ekspansi makro dari kedua argumen), definisi
teks akan menjadi argumen ketiga. Jika dua argumen pertama tidak dibandingkan sebagai
string yang sama dan ada tiga argumen, teks yang menentukan harus nol. Jika
dua argumen pertama tidak dibandingkan sebagai string yang sama dan ada empat or
lima argumen, teks yang menentukan akan menjadi argumen keempat. Jika dua yang pertama
argumen tidak dibandingkan sebagai string yang sama dan ada enam atau lebih argumen,
tiga argumen pertama harus dibuang dan pemrosesan akan dimulai kembali dengan
argumen yang tersisa. Perilaku tidak ditentukan jika jika tidak tidak
segera diikuti oleh .
memasukkan Teks yang menentukan untuk memasukkan makro akan menjadi isi dari file bernama
oleh argumen pertama. Ini akan menjadi kesalahan jika file tidak dapat dibaca. NS
perilaku tidak ditentukan jika memasukkan tidak segera diikuti oleh
kurung>.
termasuk Teks yang menentukan dari termasuk makro akan menjadi argumen pertama yang ditambah dengan
1. Ini akan menjadi kesalahan untuk menentukan argumen yang mengandung non-numerik
karakter. Perilaku tidak ditentukan jika termasuk tidak segera diikuti oleh
A .
indeks Teks yang menentukan dari indeks makro akan menjadi posisi karakter pertama (sebagai
string) dalam argumen pertama di mana string yang cocok dengan argumen kedua dimulai
(zero origin), atau 1 jika argumen kedua tidak muncul. Tingkah lakunya adalah
tidak ditentukan jika indeks tidak segera diikuti oleh .
len Teks yang menentukan dari len makro akan menjadi panjang (sebagai string) dari
argumen pertama. Perilaku tidak ditentukan jika len tidak segera diikuti
oleh .
m4keluar Keluar dari m4 kegunaan. Jika argumen pertama ditentukan, itu adalah pintu keluar
kode. Standarnya adalah nol. Ini akan menjadi kesalahan untuk menentukan argumen
berisi karakter non-numerik.
m4wrap Argumen pertama akan diproses ketika EOF tercapai. jika m4wrap makro
digunakan beberapa kali, argumen yang ditentukan harus diproses dalam urutan
dimana m4wrap makro diproses. Perilaku tidak ditentukan jika m4wrap
tidak segera diikuti oleh .
sementara Teks yang menentukan harus menjadi argumen pertama, dengan tambahan apa pun 'X' karakter
diganti dengan ID proses saat ini sebagai string. Perilaku tidak ditentukan
if sementara tidak segera diikuti oleh .
mkstemp Argumen pertama harus diambil sebagai template untuk membuat file kosong, dengan
tertinggal 'X' karakter diganti dengan karakter dari nama file portabel
set karakter. Perilaku tidak ditentukan jika argumen pertama tidak berakhir dengan
setidaknya enam 'X' karakter. Jika file sementara berhasil dibuat, maka
teks definisi makro akan menjadi nama file baru. ID pengguna
dari file harus diatur ke ID pengguna yang efektif dari proses. ID grup
dari file harus diatur ke ID grup dari direktori induk file atau ke
ID grup yang efektif dari proses tersebut. Bit izin akses file diatur
sedemikian rupa sehingga hanya pemiliknya yang dapat membaca dan menulis file, terlepas dari
arus umask dari proses. Jika file tidak dapat dibuat, teks yang menentukan
dari makro akan menjadi string kosong. Perilaku tidak ditentukan jika mkstemp
tidak segera diikuti oleh .
popdef Grafik popdef makro akan menghapus definisi argumennya saat ini, menggantikan
definisi itu dengan yang sebelumnya. Jika tidak ada definisi sebelumnya,
makro tidak terdefinisi. Perilaku tidak ditentukan jika popdef tidak segera
diikuti oleh .
pushdef Grafik pushdef makro harus setara dengan menetapkan makro dengan pengecualian
bahwa itu akan mempertahankan definisi saat ini untuk pengambilan di masa depan menggunakan
popdef makro. Perilaku tidak ditentukan jika pushdef tidak segera diikuti
oleh .
bergeser Teks yang menentukan untuk bergeser makro harus berupa daftar yang dipisahkan koma dari
argumen kecuali yang pertama. Setiap argumen harus dikutip menggunakan arus
mengutip string. Perilaku tidak ditentukan jika bergeser tidak segera
diikuti oleh .
termasuk Grafik termasuk makro harus setara dengan memasukkan makro, kecuali itu
tidak akan menjadi kesalahan jika file tidak dapat diakses. Perilaku tidak ditentukan
if termasuk tidak segera diikuti oleh .
substr Teks yang menentukan untuk substr makro akan menjadi substring dari yang pertama
argumen dimulai pada posisi karakter offset-nol yang ditentukan oleh detik
argumen. Argumen ketiga, jika ditentukan, adalah jumlah karakter untuk
Pilih; jika tidak ditentukan, karakter dari titik awal hingga akhir
argumen pertama akan menjadi teks yang menentukan. Ini tidak akan menjadi kesalahan untuk
tentukan titik awal di luar akhir argumen pertama dan definisi
teks harus nol. Ini akan menjadi kesalahan untuk menentukan argumen yang mengandung
karakter non-numerik. Perilaku tidak ditentukan jika substr tidak
segera diikuti oleh .
syscmd Grafik syscmd makro akan menafsirkan argumen pertamanya sebagai baris perintah shell. NS
mendefinisikan teks akan menjadi hasil string dari perintah itu. Hasil string
tidak boleh dipindai ulang untuk makro saat mengatur teks yang ditentukan. Tidak ada keluaran
pengalihan akan dilakukan oleh m4 kegunaan. Nilai status keluar dari
perintah dapat diambil menggunakan sysval makro. Perilaku tidak ditentukan jika
syscmd tidak segera diikuti oleh .
sysval Teks yang menentukan dari sysval makro akan menjadi nilai keluar dari utilitas
terakhir dipanggil oleh syscmd makro (sebagai string).
jejak Grafik jejak makro harus mengaktifkan penelusuran untuk makro yang ditentukan sebagai argumen,
atau, jika tidak ada argumen yang ditentukan, untuk semua makro. Keluaran jejak harus
ditulis ke kesalahan standar dalam format yang tidak ditentukan.
jejak Grafik jejak makro akan menonaktifkan pelacakan untuk makro yang ditentukan sebagai argumen,
atau, jika tidak ada argumen yang ditentukan, untuk semua makro.
menerjemahkan Teks yang menentukan dari menerjemahkan makro akan menjadi argumen pertama dengan setiap
karakter yang muncul pada argumen kedua diganti dengan yang sesuai
karakter dari argumen ketiga. Jika tidak ada karakter pengganti yang ditentukan untuk
beberapa karakter sumber karena argumen kedua lebih panjang dari yang ketiga
argumen, karakter itu harus dihapus dari argumen pertama di menerjemahkan's
mendefinisikan teks. Perilaku tidak ditentukan jika '−' karakter muncul di dalam
argumen kedua atau ketiga di mana saja selain karakter pertama atau terakhir. NS
perilaku tidak ditentukan jika karakter yang sama muncul lebih dari sekali di
argumen kedua. Perilaku tidak ditentukan jika menerjemahkan tidak segera
diikuti oleh .
tidak ditentukan Grafik tidak ditentukan makro akan menghapus semua definisi (termasuk yang dipertahankan menggunakan
itu pushdef makro) dari makro yang dinamai dengan argumennya. Tingkah lakunya adalah
tidak ditentukan jika tidak ditentukan tidak segera diikuti oleh .
mengalihkan Grafik mengalihkan makro akan menyebabkan output langsung dari teks apa pun di buffer sementara
disebut sebagai argumen, atau semua buffer sementara jika tidak ada argumen yang ditentukan.
Buffer dapat dialihkan menjadi buffer sementara lainnya. Pengalihan harus
membuang isi buffer sementara. Perilaku tidak ditentukan jika
argumen berisi karakter non-numerik.
EXIT STATUS
Nilai keluar berikut harus dikembalikan:
0 Berhasil menyelesaikan.
>0 Terjadi kesalahan
Jika m4keluar makro digunakan, nilai keluar dapat ditentukan oleh file input.
KONSEKUENSI OF GALAT
Default
Grafik berikut bagian adalah informatif.
APLIKASI PENGGUNAAN
Grafik defn macro berguna untuk mengganti nama macro, terutama built-in.
Sejak evaluasi mengacu pada standar ISO C, beberapa operasi memiliki perilaku yang tidak terdefinisi. Dalam beberapa
implementasi, pembagian atau sisa dengan nol menyebabkan sinyal fatal, bahkan jika pembagian
terjadi pada cabang hubung singkat dari "&&" or "||". Operasi apa pun yang meluap masuk
aritmatika bertanda menghasilkan perilaku yang tidak terdefinisi. Demikian juga dengan menggunakan bergeser operator dengan
jumlah pergeseran yang tidak positif dan lebih kecil dari presisi tidak terdefinisi, sebagaimana adanya
menggeser bilangan negatif ke kanan. Secara historis, tidak semua implementasi mematuhi C-
aturan prioritas bahasa: '~' dan '!' lebih rendah dari '=='; '==' dan '!=' tidak lebih rendah
dari '<'; Dan '|' tidak lebih rendah dari '^'; penggunaan liberal "()" dapat memaksa yang diinginkan
didahulukan bahkan dengan implementasi yang tidak sesuai ini. Selanjutnya, beberapa tradisional
implementasi diperlakukan '^' sebagai operator eksponensial, meskipun sebagian besar implementasi
sekarang gunakan "**" sebagai perpanjangan untuk tujuan ini.
Ketika makro telah dikalikan didefinisikan melalui pushdef makro, tidak ditentukan apakah
itu menetapkan makro hanya akan mengubah definisi terbaru (seolah-olah oleh popdef dan
pushdef), atau ganti seluruh tumpukan definisi dengan satu definisi (seolah-olah
by tidak ditentukan dan pushdef). Aplikasi yang menginginkan perilaku tertentu untuk menetapkan
makro dalam hal ini dapat mendefinisikan ulang sesuai.
Aplikasi harus menggunakan mkstemp makro bukannya usang sementara makro untuk
membuat file sementara.
CONTOH
Jika file m4src berisi baris:
Grafik nilai of `VER' is "VER".
ifdef(`VER', ``VER'' is didefinisikan untuk be VER., VER is tidak ditentukan.)
ifel (VER, 1, ``VER'' is `VER'.)
ifel (VER, 2, ``VER'' is `VER'., ``VER'' is tidak 2.)
akhir
lalu perintah
m4 m4src
atau perintah:
m4 U VER m4src
menghasilkan keluaran:
Grafik nilai of VER is "VER".
VER is tidak didefinisikan.
VER bukan 2.
akhir
Perintah:
m4 D VER m4src
menghasilkan keluaran:
Grafik nilai of VER is "".
VER is didefinisikan untuk be .
VER bukan 2.
akhir
Perintah:
m4 D VER = 1 m4src
menghasilkan keluaran:
Grafik nilai of VER is "1".
VER is didefinisikan untuk be 1.
VER is 1.
VER is tidak 2.
akhir
Perintah:
m4 D VER = 2 m4src
menghasilkan keluaran:
Grafik nilai of VER is "2".
VER is didefinisikan untuk be 2.
VER adalah 2.
akhir
ALASAN
Perilaku berbasis Sistem Sejarah V diperlakukan "${" dalam definisi makro sebagai dua literal
karakter. Namun, urutan ini dibiarkan tidak ditentukan sehingga implementasi dapat menawarkan
ekstensi seperti "${11}" yang berarti parameter posisi kesebelas. Macro masih bisa
didefinisikan dengan penggunaan kutipan bersarang yang tepat untuk menghasilkan literal "${" dalam keluaran
setelah memindai ulang menghapus tanda kutip bersarang.
Dalam majalah menerjemahkan built-in, perilaku berbasis Sistem V yang bersejarah diperlakukan '−' sebagai harfiah; GNU
perilaku memperlakukannya sebagai rentang. Versi standar ini memungkinkan kedua perilaku tersebut.
MASA DEPAN ARAH
Tidak ada.
Gunakan m4posix online menggunakan layanan onworks.net