ນີ້ແມ່ນຄໍາສັ່ງ icmake ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນສະຖານີເຮັດວຽກອອນໄລນ໌ຟຣີຫຼາຍອັນຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
icmake - ການບໍາລຸງຮັກສາໂຄງການ (ເຮັດໃຫ້) ການນໍາໃຊ້ a C- ຄືໄວຍະກອນ
ສະຫຼຸບສັງລວມ
icmake [ທາງເລືອກ] ແຫຼ່ງ[.im] [dest[.bim]] [-- [args]]
icmun bimfile
ລາຍລະອຽດ
Icmake(1) ສາມາດນໍາໃຊ້ເປັນທາງເລືອກໃນການ ເຮັດໃຫ້(1). ໃນຮູບແບບການດໍາເນີນງານມາດຕະຖານຂອງມັນ, ມັນ
ໂທຫາໂຄງການດັ່ງຕໍ່ໄປນີ້:
o icm-pp ເພື່ອປະມວນຜົນໄຟລ໌ icmake ກ່ອນ
o icm-comp to byte-code compile the icmake s
o icm-exec ເພື່ອປະຕິບັດໄຟລ໌ byte-code
Icmake ອະນຸຍາດໃຫ້ຜູ້ຂຽນໂຄງການທີ່ຈະນໍາໃຊ້ພາສາການຂຽນໂປຣແກຣມ (ໃກ້ຊິດຄ້າຍຄືທີ່ຮູ້ຈັກດີ
C-programming language) ເພື່ອກໍານົດການປະຕິບັດທີ່ມີສ່ວນຮ່ວມໃນ (ສະລັບສັບຊ້ອນ).
ບໍາລຸງຮັກສາ. ສໍາລັບການນີ້, icmake ສະຫນອງການປະຕິບັດພິເສດຕ່າງໆເຊັ່ນດຽວກັນກັບຊຸດສະຫນັບສະຫນູນ
ຫນ້າທີ່ພິສູດແລ້ວວ່າມັນເປັນປະໂຫຍດໃນການຮັກສາໂປຼແກຼມ.
ໂຄງການ icmun(1) ສາມາດໃຊ້ເພື່ອຖອດປະກອບໄຟລ໌ byte-code (.bim). ອິກມຸນ
ຕົ້ນຕໍແມ່ນໃຊ້ສໍາລັບຕົວຢ່າງ, ການສຶກສາ, ແລະການດີບັກ.
ເຄື່ອງມືສ້າງສາແບບດັ້ງເດີມຈະລວບລວມແຫຼ່ງຂໍ້ມູນເມື່ອໄຟລ໌ຫົວຖືກດັດແກ້. ໃນ
ສະພາບການຂອງ C ++ ການພັດທະນາໂຄງການນີ້ມັກຈະເປັນຄວາມຄິດທີ່ບໍ່ດີ, ຍ້ອນວ່າການເພີ່ມສະມາຊິກໃຫມ່ໃຫ້ກັບ a
ຫ້ອງຮຽນບໍ່ປົກກະຕິຕ້ອງການໃຫ້ທ່ານລວບລວມແຫຼ່ງຂໍ້ມູນຂອງຊັ້ນຮຽນ. ເພື່ອຈັດການຫ້ອງຮຽນ
dependencies icmbuld(1) ອາດຈະກວດສອບ ຫ້ອງ ໄຟລ໌ທີ່ສາມາດໃຊ້ເພື່ອກໍານົດການຂຶ້ນກັບ
ໃນບັນດາຫ້ອງຮຽນ. ໂດຍຄ່າເລີ່ມຕົ້ນ, class-dependencies ບໍ່ໄດ້ຖືກຕີຄວາມໝາຍ. ອ້າງເຖິງ icmconf(7)
man-page ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.
OPTIONS
Icmake ໃຊ້ໄຟລ໌ ແລະຕົວເລືອກຕໍ່ໄປນີ້:
o ແຫຼ່ງ: icmake ໄຟລ໌ແຫຼ່ງສະຄຣິບ (ສ່ວນຂະຫຍາຍເລີ່ມຕົ້ນ: im).
o ຈຸດຫມາຍປາຍທາງ: ຄູ່ icmake ໄຟລ໌ສະຄຣິບ (ຄ່າເລີ່ມຕົ້ນ: `ແຫຼ່ງ'.bim, ເອີ້ນວ່າ 'ໄຟລ໌ .bim'
ດ້ານລຸ່ມ).
o --: icmake arguments ແຍກຕົວແຍກ icmake ການໂຕ້ຖຽງຈາກການໂຕ້ຖຽງຜ່ານ
ໄປຫາ .bim filenl() ໂຕ້ຖຽງ: ການໂຕ້ຖຽງຕໍ່ໄປນີ້ -- ຖືກສົ່ງໄປຫາໄຟລ໌ .bim
as-is, ແລະສາມາດໃຊ້ໄດ້ຈາກ ບັນຊີລາຍຊື່ argv ພາລາມິເຕີທີ່ກໍານົດເປັນ icmake
ສະຄຣິບ ຕົ້ນຕໍ ພາລາມິເຕີທີສອງຂອງຟັງຊັນ (ເບິ່ງຂ້າງລຸ່ມນີ້ຢູ່ໃນພາກ ຜູ້ໃຊ້ ກໍານົດ
FUNCTIONS). ສໍາລັບບາງທາງເລືອກ (ເບິ່ງຂ້າງລຸ່ມນີ້) ໄດ້ -- ບໍ່ຈໍາເປັນຕົວແຍກ.
Icmake ສະຫນັບສະຫນູນທາງເລືອກຕ່າງໆ, ອະທິບາຍຕໍ່ໄປ. ໄດ້ -h ທາງເລືອກ overrules ອື່ນທັງຫມົດ
ທາງເລືອກ, ໄດ້ -a ທາງເລືອກ overrules ທາງເລືອກອື່ນທັງຫມົດຍົກເວັ້ນສໍາລັບ -h. ຂອງການປະຕິບັດທີ່ຍັງເຫຼືອ
ທາງເລືອກ (-b, -c, -e, -i, -p ແລະ -t) ມີພຽງແຕ່ຫນຶ່ງອາດຈະໄດ້ຮັບການລະບຸໄວ້:
o -a
ສະແດງຂໍ້ມູນກ່ຽວກັບ icmake, overruled ໂດຍ -h;
o -b
discontinued: ໃຊ້ທາງເລືອກ -e ແທນ;
o -c
ໄດ້ icmake ແຫຼ່ງໄຟລ໌ຖືກລວບລວມ, ສ້າງໄຟລ໌ .bim;
o -e
ປະຕິບັດໄດ້ icmake ໄຟລ໌ .bim, ໃຫ້ເປັນ icmakeargument ໄຟລ໌ທໍາອິດ. ເພີ່ມເຕີມໃດໆ
arguments ຖືກສົ່ງກັບໄຟລ໌ .bim as-is, ແລະ -- ບໍ່ຄວນລະບຸ;
o -F
ຊື່ໄຟລ໌ແລະທຸງເຊັ່ນດຽວກັນກັບສະພາບລວມຂອງການປະຕິບັດທັງຫມົດທີ່ຈະດໍາເນີນການໂດຍ
icmake ຖືກສະແດງຢູ່ໃນກະແສຜົນຜະລິດມາດຕະຖານ;
o -h
ໃຫ້ຂໍ້ມູນການນໍາໃຊ້ແລະສິ້ນສຸດ icmake;
o -i
ການໂຕ້ຖຽງທໍາອິດແມ່ນ icmake ໄຟລ໌ຕົ້ນສະບັບ, ໄຟລ໌ຖານສອງແມ່ນ
ກໍ່ສ້າງຖ້າຈໍາເປັນ. ການໂຕ້ແຍ້ງເພີ່ມເຕີມໃດນຶ່ງຈະຖືກສົ່ງຜ່ານໄຟລ໌ .bim
ເຊັ່ນດຽວກັບ, ແລະ -- ບໍ່ຄວນລະບຸ;
o -p
ໄດ້ icmake ໄຟລ໌ແຫຼ່ງແມ່ນພຽງແຕ່ preprocessed, ແລະໄຟລ໌ preprocessed ແມ່ນລາຍລັກອັກສອນ
to icmakeargument ໄຟລ໌ທີສອງຂອງ (ຕາມຄ່າເລີ່ມຕົ້ນ `ແຫຼ່ງ'.pim);
o -q
ບໍ່ສົນໃຈ, ຈະຖືກລຶບອອກໃນອະນາຄົດ icmake ຮຸ່ນ;
o -t
ການໂຕ້ຖຽງດັ່ງຕໍ່ໄປນີ້ -t ແມ່ນຊື່ຂອງໄຟລ໌ .bim ຊົ່ວຄາວ, ເຊິ່ງຖືກລຶບອອກ
ຫຼັງຈາກ icmakeໂທ. ເມື່ອໃດ . ຖືກລະບຸເປັນຊື່ຂອງໄຟລ໌ .bim ຊົ່ວຄາວ
ຫຼັງຈາກນັ້ນ, ໄດເລກະທໍລີຊົ່ວຄາວເລີ່ມຕົ້ນ, ຕາມດ້ວຍ icmakeprocess-id ຂອງ, ຕາມດ້ວຍ
.ບິມ ຖືກນໍາໃຊ້.
ປະຕິບັດຕາມຊື່ຂອງ .bim ຊົ່ວຄາວໄຟລ໌ຊື່ຂອງ icmake script ແຫຼ່ງ
ຕ້ອງໄດ້ຮັບການລະບຸ. ການໂຕ້ແຍ້ງເພີ່ມເຕີມໃດນຶ່ງຈະຖືກສົ່ງຜ່ານໄຟລ໌ .bim as-is, ແລະ
-- ບໍ່ຄວນລະບຸ; ຫຼັງຈາກການຕັ້ງທຸງປະຕິບັດໄຟລ໌ script ແຫຼ່ງ
(chmod +x script) ແລະໃຫ້ມັນເປັນແຖວຕົ້ນສະບັບເຊັ່ນນີ້:
#!/usr/bin/icmake -t.
ໄດ້ icmake script ສາມາດຖືກເອີ້ນວ່າໂດຍກົງ:
script arg1 arg2
ໃນກໍລະນີດັ່ງກ່າວ icmake script `ອັກສອນ' ຖືກປະຕິບັດໃນຂະນະທີ່ມັນໄດ້ຮັບ
ກະທູ້ທີ່ script arg1 arg2.
o -T
ທາງເລືອກນີ້ຕ້ອງໄດ້ຮັບການສະຫນອງໃຫ້ກັບຊື່ຂອງໄດເລກະທໍລີທີ່ຖືກນໍາໃຊ້ເພື່ອເກັບຮັກສາ
ໄຟລ໌ຊົ່ວຄາວ. ຕົວຢ່າງ: ເມື່ອລວບລວມຂໍ້ມູນ icmake script, ຜົນຜະລິດຂອງ icmake's
preprocessor ແມ່ນໄຟລ໌ຊົ່ວຄາວທີ່ຖືກລຶບອອກໃນເວລາອອກ. ໂດຍຄ່າເລີ່ມຕົ້ນ / tmp ຖືກນໍາໃຊ້,
ເວັ້ນເສຍແຕ່ວ່າ / tmp ບໍ່ແມ່ນໄດເລກະທໍລີທີ່ສາມາດຂຽນໄດ້, ໃນກໍລະນີນີ້ຜູ້ໃຊ້ປະຈຸບັນ $ ບ້ານ
ໄດເລກະທໍລີຖືກນໍາໃຊ້. ຊື່ໄຟລ໌ຊົ່ວຄາວ implicit ເລີ່ມຕົ້ນດ້ວຍ id ຂະບວນການຂອງ
ປະຈຸບັນ icmake ຂະບວນການ.
o -v
ການສະແດງ icmakeເລກສະບັບຂອງ, ແລະສິ້ນສຸດ icmake, overruled ໂດຍ -h
ອິກມຸນ:
bimfile: ຄູ່ icmake ໄຟລ໌ສະຄຣິບ.
ໂປຣເຊສເຊີ ທິດທາງ
ຄຳສັ່ງ preprocessor ຕໍ່ໄປນີ້ແມ່ນມີຢູ່:
o ຄໍາເຫັນ:
ມາດຕະຖານ C ຄໍາເຫັນ (ທັງຫມົດລະຫວ່າງ /* ແລະ */) ເຊັ່ນດຽວກັນກັບຄໍາຄິດຄໍາເຫັນຕໍ່ທ້າຍແຖວ (ທັງຫມົດ
ເນື້ອໃນແຖວຕໍ່ໄປນີ້ //) ຖືກລະເລີຍ.
o Shell startup: ແຖວທໍາອິດຂອງ icmake-script ອາດຈະເລີ່ມຕົ້ນດ້ວຍ #!ເສັ້ນທາງ, ບ່ອນທີ່
ເສັ້ນທາງ ກໍານົດສະຖານທີ່ຢ່າງແທ້ຈິງຂອງ icmake ໂຄງການ. ໂດຍການເຮັດບົດ
ປະຕິບັດໄດ້, ມັນສາມາດເອີ້ນວ່າໂດຍບໍ່ມີການໂທຫາຢ່າງຊັດເຈນ icmake.
ຕົວຢ່າງ: ຖ້າແຖວທໍາອິດຂອງ (ປະຕິບັດໄດ້) icmakefile 'icm' (ໂດຍບໍ່ມີການຂະຫຍາຍ)
ປະກອບດ້ວຍ
#!/usr/bin/icmake -i
ຫຼັງຈາກນັ້ນ icm ອາດຈະຖືກອອກເປັນຄໍາສັ່ງ, ດັ່ງນັ້ນການປະຕິບັດ
/usr/bin/icmake -i icm ...
ອີກທາງເລືອກ,
#!/usr/bin/icmake -t /tmp/icm
ອາດຈະຖືກນໍາໃຊ້, ສົ່ງຜົນໃຫ້ການປະຕິບັດຂອງ
#!/usr/bin/icmake -t /tmp/icm icm ...
ໃນກໍລະນີນີ້ໄຟລ໌ຖານສອງໄດ້ຖືກໂຍກຍ້າຍອອກໃນການອອກ.
o #include "ຊື່ເອກະສານ"
ໄຟລ໌ ຊື່ເອກະສານ ແມ່ນລວມຢູ່ສະຖານທີ່ຂອງຄໍາສັ່ງ
o #include
ໄຟລ໌ ຊື່ເອກະສານ ແມ່ນລວມຢູ່ໃນສະຖານທີ່ຂອງ #include ຄໍາສັ່ງ; ຊື່ເອກະສານ
ຖືກຄົ້ນຫາຢູ່ໃນໄດເລກະທໍລີທີ່ຂັ້ນດ້ວຍຈໍ້າສອງເມັດທີ່ລະບຸໄວ້ໂດຍ IM ສະພາບແວດລ້ອມ
ຕົວແປ. ການປະກົດຕົວຄັ້ງທໍາອິດຂອງ ຊື່ເອກະສານ ໃນໄດເລກະທໍລີທີ່ລະບຸໄວ້ໂດຍ IM
ຕົວແປສະພາບແວດລ້ອມຖືກນໍາໃຊ້.
o #ກໍານົດ ຕົວລະບຸ [ຄໍານິຍາມ]
ຂໍ້ຄວາມ ຕົວລະບຸ ຈະຖືກແທນທີ່ດ້ວຍ ຄໍານິຍາມ. ຄໍານິຍາມອາດຈະປະກອບດ້ວຍ
ການອ້າງອີງເຖິງຕົວລະບຸທີ່ໄດ້ກໍານົດໄວ້ແລ້ວ, ໂດຍໃຊ້ ${identifier} ຮູບແບບ. ຖ້າ
${identifier} ຍັງບໍ່ໄດ້ຖືກກໍານົດ (ເທື່ອ), ຂໍ້ຄວາມ ${identifier} ຖືກເກັບຮັກສາໄວ້ຢ່າງແທ້ຈິງ.
ເພື່ອປ້ອງກັນບໍ່ໃຫ້ເກີດທີ່ບໍ່ມີຈໍາກັດຫຼາຍທີ່ສຸດ 100 ${identifier} ການທົດແທນແມ່ນອະນຸຍາດໃຫ້.
ຄໍານິຍາມສືບຕໍ່ຢູ່ໃນແຖວຕໍ່ໄປຖ້າຕົວອັກສອນສຸດທ້າຍໃນແຖວແມ່ນ a
backslash (\). (ເຊິ່ງບໍ່ໄດ້ລວມຢູ່ໃນຄໍານິຍາມ). ໂປເຊດເຊີກ່ອນ
concatenates double-quuted strings, ແລະ strings ວົງຢືມ double ອາດຈະບໍ່ຂະຫຍາຍຫຼາຍ
ສາຍ. ຊ່ອງຫວ່າງຫຼາຍອັນ (ນອກສະຕຣິງທີ່ອ້າງອີງຄູ່) ໃນຄໍານິຍາມແມ່ນ
ສັນຍາກັບພື້ນທີ່ຫວ່າງດຽວ.
ຄໍານິຍາມດັ່ງຕໍ່ໄປນີ້ # ນິຍາມ ຕົວລະບຸເປັນທາງເລືອກ. ຖ້າຖືກລະເວັ້ນ, ໄດ້
macro ຖືກກໍານົດ, ສະນັ້ນມັນສາມາດຖືກນໍາໃຊ້ໃນ #if(n) def ຄໍາແນະນໍາ (ເບິ່ງຂ້າງລຸ່ມນີ້), ແຕ່ພວກເຂົາ
ບໍ່ໄດ້ຖືກແທນທີ່ດ້ວຍຂໍ້ຄວາມໃດໆໃນ icmake ຖະແຫຼງການຂອງລະຫັດ.
o #ifdef ຕົວລະບຸ
ຖ້າ ຕົວລະບຸ macro ໄດ້ຖືກກໍານົດເປັນບລັອກຕໍ່ໄປຂອງລະຫັດ (ຈົນກ່ວາການຈັບຄູ່ #ອື່ນ
or #ສຸດທ້າຍ ຄໍາສັ່ງໄດ້ຖືກອ່ານ) ແມ່ນ byte-compiled. ຖ້າບໍ່ດັ່ງນັ້ນ, ຕັນຂອງລະຫັດແມ່ນ
ບໍ່ສົນໃຈ.
o #ifndef ຕົວລະບຸ
ຖ້າ ຕົວລະບຸ ມະຫາພາກແມ່ນ ບໍ່ ກໍານົດລະຫັດຕໍ່ໄປຂອງລະຫັດ (ຈົນກ່ວາການຈັບຄູ່
#ອື່ນ or #ສຸດທ້າຍ ຄໍາສັ່ງໄດ້ຖືກກວດພົບ) ແມ່ນ byte-compiled. ຖ້າບໍ່ດັ່ງນັ້ນ, ຕັນຂອງ
ລະຫັດຖືກລະເລີຍ.
o #ອື່ນ
ຢຸດຕິ ກ #ifdef ແລະ #ifndef ຄໍາສັ່ງ, reversing ການຕັດສິນໃຈຍອມຮັບກ່ຽວກັບ
ລະຫັດຕໍ່ໄປນີ້. ພຽງແຕ່ຫນຶ່ງ #ອື່ນ ຄໍາສັ່ງສາມາດເຊື່ອມໂຍງກັບ #if(n) def
ທິດທາງ.
o #ສຸດທ້າຍ
ຢຸດການປິດໂປຣເຊສເຊີກ່ອນເລີ່ມຈາກການຈັບຄູ່ #ifdef, #ifndef or #ອື່ນ
ຄໍາສັ່ງ. ໄດ້ #ສຸດທ້າຍ ໄດເລກະທໍລີແລະການຈັບຄູ່ຂອງມັນ #if(n) def ຄໍາສັ່ງຕ້ອງເປັນ
ລະບຸໄວ້ໃນໄຟລ໌ດຽວກັນ.
o #ສຸດຍອດ ຕົວລະບຸ
ເອົາ ຕົວລະບຸ ຈາກຊຸດຂອງສັນຍາລັກທີ່ກໍານົດໄວ້. ນີ້ບໍ່ມີຜົນກະທົບ
ສະເພາະຂອງສັນຍາລັກທີ່ກຳນົດໄວ້ກ່ອນໜ້ານີ້ ຕົວລະບຸ ຄໍານິຍາມ
ໄດ້ຖືກນໍາໃຊ້. ຖ້າ ຕົວລະບຸ ຍັງບໍ່ທັນໄດ້ຮັບການອອກຄໍາເຕືອນ.
ຂໍ້ມູນ TYPES
Icmake ສະຫນັບສະຫນູນປະເພດຂໍ້ມູນເຫຼົ່ານີ້:
o ASCII ລັກສະນະ ຄົງທີ່
ຄ່າຄົງທີ່ຂອງຕົວອັກສອນ ASCII ປະກອບດ້ວຍໜຶ່ງຕົວອັກສອນ, ອ້ອມຮອບດ້ວຍຕົວດຽວ ຫຼື ຄູ່
ວົງຢືມ. ຕົວອັກສອນດຽວ (ຕົວຢ່າງ: 'ກ') ເປັນຕົວແທນຂອງລັກສະນະຕົວມັນເອງ. ມາດຕະຖານ
ລໍາດັບການຫລົບຫນີ (ຕົວຢ່າງ: '\n') ໄດ້ຮັບການສະຫນັບສະຫນູນແລະເປັນຕົວແທນຂອງມາດຕະຖານທີ່ປ່ຽນໃຈເຫລື້ອມໃສຂອງພວກເຂົາ
ມູນຄ່າ (ຕົວຢ່າງ: '\n' ເປັນຕົວແທນຂອງຄ່າ ascii 10 (ທົດສະນິຍົມ)). ການຫລົບຫນີທີ່ບໍ່ໄດ້ມາດຕະຖານ
ລໍາດັບ (ຕົວຢ່າງ, '\x') ເປັນຕົວແທນຂອງລັກສະນະ ascii ປະຕິບັດຕາມລັກສະນະການຫລົບຫນີ
(ດັ່ງນັ້ນ '\x' ເທົ່າກັນ 'x'). ລໍາດັບການຫລົບຫນີທີ່ປະກອບດ້ວຍສາມຕົວເລກຖານແປດເປັນຕົວແທນ
ລັກສະນະ ascii ທີ່ສອດຄ້ອງກັບໂມດູໂລ octal value 256 (ຕົວຢ່າງ: '\123').
ລໍາດັບ Escape ປະກອບດ້ວຍ x ຕິດຕາມດ້ວຍສອງຕົວເລກຖານສິບຫົກເປັນຕົວແທນ
ຕົວອັກສອນ ascii ທີ່ສອດຄ້ອງກັບຄ່າເລກຖານສິບຫົກ (ຕົວຢ່າງ: '\xa4').
o int
ຄ່າລວມ, ຕັ້ງແຕ່ -0x8000 ໂດຍຜ່ານການ 0x7ffff. int ຄົງທີ່ອາດຈະເປັນ
ລະບຸເປັນຕົວເລກທົດສະນິຍົມ (ເລີ່ມຕົ້ນດ້ວຍຕົວເລກ 1 ຫາ 9), ເລກແປດ
(ເລີ່ມຕົ້ນດ້ວຍ 0, ຕິດຕາມດ້ວຍຕົວເລກແປດ ຫຼືຫຼາຍກວ່ານັ້ນ) ເລກຖານສິບຫົກ
(ເລີ່ມຕົ້ນດ້ວຍ 0x, ຕິດຕາມດ້ວຍຕົວເລກເລກຖານສິບຫົກຫຼືຫຼາຍກວ່ານັ້ນ) ຫຼືເປັນ ASCII
ຄົງຕົວ.
o string
ຕົວແປຂໍ້ຄວາມ. String constant ແມ່ນ delimited by double quotes. ຫຼາຍສາຍ
constant ອາດຈະໄດ້ຮັບການ concatenated, ແຕ່ສະຕຣິງຄົງທີ່ດຽວອາດຈະບໍ່ໄດ້ກວມເອົາຫຼາຍ
ສາຍ. ສະຕຣິງຄົງທີ່ທີ່ແຍກອອກດ້ວຍພື້ນທີ່ສີຂາວເທົ່ານັ້ນ (ເຊັ່ນ: ຊ່ອງຫວ່າງ, ແຖວໃໝ່,
ຄໍາຄິດເຫັນ) ແມ່ນ concatenated ແລະເປັນຕົວແທນຂອງຄົງທີ່ສະຕຣິງດຽວ. ເພື່ອຊີ້ໃຫ້ເຫັນເຖິງ
end-of-line ໃນ string constant ໃຊ້ the \n ລໍາດັບການຫລົບຫນີ.
ຕົວເລກຄົງທີ່ຂອງຕົວອັກສອນ ASCII ອ້ອມຮອບດ້ວຍວົງຢືມຄູ່ຍັງສາມາດຖືກນໍາໃຊ້ໃນ
ການສະແດງອອກທາງເລກຄະນິດຖ້າໜຶ່ງໃນຕົວດຳເນີນການແມ່ນ an int. ລັກສະນະດຽວ
ຄົງທີ່ ຕ້ອງ ເປັນຄົງທີ່, ແລະບໍ່ສາມາດເປັນ string ຕົວແປ.
ເຊັ່ນດຽວກັນ, ຕົວອັກສອນ ASCII ຄົງທີ່ອ້ອມຮອບດ້ວຍວົງຢືມດຽວອາດຈະຖືກນໍາໃຊ້ໃນ
ສະຖານະການທີ່ຄາດການ string operand.
o ບັນຊີລາຍຊື່
ໂຄງສ້າງຂໍ້ມູນທີ່ມີຊຸດຂອງສ່ວນບຸກຄົນທີ່ສາມາດເຂົ້າເຖິງໄດ້ string ຄຸນຄ່າ. ເມື່ອໃດ
ບັນຊີລາຍຊື່ປະກອບດ້ວຍອົງປະກອບ, ອົງປະກອບທໍາອິດຂອງມັນຖືກສະແດງໂດຍດັດຊະນີ 0.
o void
ໃຊ້ກັບນິຍາມຟັງຊັນເພື່ອຊີ້ບອກວ່າຟັງຊັນບໍ່ສົ່ງຄືນ a
ມູນຄ່າ.
ຕົວແປສາມາດຖືກກໍານົດໃນລະດັບໂລກເຊັ່ນດຽວກັນກັບລະດັບທ້ອງຖິ່ນພາຍໃນ
ຫນ້າທີ່. ເມື່ອກໍານົດພາຍໃນຫນ້າທີ່, ມາດຕະຖານ C ຂອບເຂດ ແລະກົດລະບຽບການເບິ່ງເຫັນ
ສະຫມັກ. ຕົວຢ່າງ, ຕົວແປທ້ອງຖິ່ນສາມາດຖືກນໍາໃຊ້ພຽງແຕ່ຢູ່ໃນຕົວຂອງມັນເອງຫຼືຢູ່ໃນຮັງທີ່ເລິກເຊິ່ງກວ່າ
ຕັນ, ການເບິ່ງເຫັນຂອງພວກມັນຖືກປິດບັງຢູ່ໃນທ່ອນໄມ້ທີ່ມີຮັງຫຼາຍໂດຍການກໍານົດຕົວຕົນ.
ມີຊື່ຕົວແປພາຍໃນທ່ອນໄມ້ທີ່ຝັງເລິກກວ່ານັ້ນ. ຕົວແປຖືກພິມຢ່າງແຂງແຮງ, ແລະ
ບໍ່ສາມາດມີປະເພດ void.
ຕົວແປອາດຈະໄດ້ຮັບການເລີ່ມຕົ້ນເມື່ອພວກເຂົາຖືກກໍານົດ. Initializations ແມ່ນການສະແດງອອກ, ວ່າ
ສາມາດນໍາໃຊ້ຫນ້າທີ່ກໍານົດໄວ້ກ່ອນຫຼືໂດຍຜູ້ໃຊ້, ຄ່າຄົງທີ່, ແລະຄຸນຄ່າຂອງຕົວແປທີ່ມີ
ສັງເກດເຫັນຢູ່ໃນຈຸດຂອງຄໍານິຍາມ.
ກຳນົດໄວ້ລ່ວງໜ້າ ຄົງທີ່
ຄົງທີ່ຕໍ່ໄປນີ້ແມ່ນຖືກກໍານົດໄວ້ລ່ວງໜ້າໂດຍ icmake. ທັງຫມົດແມ່ນຄົງທີ່ int ຄຸນຄ່າ:
─────────────────────────────────
ຄ່າສັນຍາລັກທີ່ມີຈຸດປະສົງ
─────────────────────────────────
O_ALL 8 makelist
O_DIR 2 makelist
O_FILE 1 ບັນຊີລາຍການ
O_SUBDIR 4 makelist
─────────────────────────────────
ປິດ 0 ສຽງດັງ
ON 1 ສຽງດັງ
─────────────────────────────────
P_CHECK 0 ໂທລະບົບ
P_NOCHEC 1 ໂທລະບົບ
─────────────────────────────────
S_IEXEC 32 ສະຖິຕິ
S_IFCHR 1 ສະຖິຕິ
S_IFDIR 2 ສະຖິຕິ
S_IFREG 4 ສະຖິຕິ
S_IREAD 8 ສະຖິຕິ
S_IWRITE 16 ສະຖິຕິ
─────────────────────────────────
ຄົງທີ່ຕໍ່ໄປນີ້ແມ່ນຂຶ້ນກັບສະຖາປັດຕະຍະກຳ:
────────────────────────────────────────── ──────────────
ສັນຍາລັກ 1 ໃນເວລາທີ່ກໍານົດໄວ້ໃນເວທີ, ຖ້າບໍ່ດັ່ງນັ້ນແມ່ນ 0
────────────────────────────────────────── ──────────────
unix Unix, ປົກກະຕິແລ້ວມີ gcc compiler ຂອງ GNU
UNIX ອາດມີທາງເລືອກອື່ນ
linux x86 ແລ່ນ Linux (ປົກກະຕິແລ້ວມີ gcc)
LINUX ອາດມີທາງເລືອກອື່ນ
M_SYSV, M_UNIX x86 ແລ່ນ SCO/Unix
_POSIX _SOURCE Unix ກັບ Posix compliant compiler
__hpux HP-UX, ກັບຄອມພີເລີ HP ພື້ນເມືອງ
────────────────────────────────────────── ──────────────
ຜູ້ປະກອບການ
ພິມ int ໂຕປະຕິບັດການ:
ທັງຫມົດ C ໂຕປະຕິບັດການສາມາດໃຊ້ໄດ້ (ຍົກເວັ້ນຕົວຊີ້ບອກ, ເປັນ icmake ບໍ່ສະຫນັບສະຫນູນ
ຕົວຊີ້). ພວກເຂົາເຈົ້າດໍາເນີນການຄືກັບຂອງເຂົາເຈົ້າ C- ຄູ່ຮ່ວມງານພາສາໂຄງການ.
string-typed ໂຕປະຕິບັດການ:
ສໍາລັບການ string ປະເພດຕົວແປ ແລະ/ຫຼືຄ່າຄົງທີ່ຕົວປະຕິບັດການຕໍ່ໄປນີ້ແມ່ນມີຢູ່ (a ແລະ b
ເປັນຕົວແທນຂອງ string ຕົວແປ ຫຼືຄ່າຄົງທີ່):
o a + b: ກັບຄືນມາໃໝ່ string ມູນຄ່າທີ່ປະກອບດ້ວຍ concatenation ຂອງ string ຄ່າ a
ແລະ b. ໃຫ້ສັງເກດວ່າ string ຄົງທີ່ອາດຈະຖືກ concatetated ໂດຍກົງ (ໂດຍບໍ່ມີການນໍາໃຊ້ +
operator), eg, ສອງເສັ້ນຕໍ່ໄປນີ້ທັງສອງກໍານົດ string "ສະບາຍດີ ໂລກ ":
"ສະບາຍດີຊາວໂລກ"
"ສະບາຍດີ" + "ໂລກ"
o a += b: a ຕ້ອງເປັນ string ຕົວແປ, ທີ່ string ຕົວແປຫຼືມູນຄ່າ b is
ຕໍ່ທ້າຍ.
o ການປຽບທຽບ string: operators == != <= >= < > != ແລະ == ອາດຈະຖືກນໍາໃຊ້ກັບ string
ຄ່າ ຫຼືຕົວແປ, ສົ່ງຄືນ 1 ຖ້າການປຽບທຽບສຳເລັດ, ຖ້າບໍ່ດັ່ງນັ້ນ 0.
ການປຽບທຽບແມ່ນຕົວພິມນ້ອຍ, ແລະປະຕິບັດຕາມຄໍາສັ່ງຫຼືຕົວອັກສອນຕາມທີ່ໄດ້ກໍານົດ
ໃນ ASCII ຊຸດຕົວອັກສອນ.
o !a: ບູລີນ ! (ບໍ່) operator ກັບຄືນ 1 ຖ້າ string a ແມ່ນຫວ່າງເປົ່າ, ຖ້າບໍ່ດັ່ງນັ້ນ 0 ແມ່ນ
ກັບຄືນມາ.
o a younger b, a ໃຫມ່ກວ່າ b: ຕອບ 1 ຖ້າໄຟລ໌ a ບໍ່ດົນມານີ້ຫຼາຍກ່ວາໄຟລ໌ b. ຕົວຢ່າງ:
"source.cc" ໃຫມ່ກວ່າ "ແຫຼ່ງ.o". ໄຟລ໌ a ແລະ b ບໍ່ຈໍາເປັນຕ້ອງມີ: ຖ້າທັງສອງບໍ່ມີ
ມີຢູ່ 0 ຖືກສົ່ງຄືນ; ຖ້າ b ບໍ່ມີ, 1 ຖືກສົ່ງຄືນ; ຖ້າ a ບໍ່ມີ 0 ແມ່ນ
ກັບຄືນ; ຖ້າພວກເຂົາມີອາຍຸເທົ່າທຽມກັນ 0 ຈະຖືກສົ່ງຄືນ. (ໄດ້ ມີຢູ່() ຟັງຊັນທີ່ກໍານົດໄວ້ກ່ອນ
(ເບິ່ງຂ້າງລຸ່ມນີ້, ພາກ ກຳນົດໄວ້ລ່ວງໜ້າ FUNCTIONS) ສາມາດຖືກນໍາໃຊ້ເພື່ອທົດສອບຢ່າງຊັດເຈນວ່າ a
ໄຟລ໌ມີຢູ່).
o a ເກົ່າກວ່າເກົ່າ b: turns 1 if file a ເກົ່າກວ່າໄຟລ໌ b. ຕົວຢ່າງ: "libprog.a" ເກົ່າກວ່າເກົ່າ
"ແຫຼ່ງ.o". ໄຟລ໌ a ແລະ b ບໍ່ຈໍາເປັນຕ້ອງມີ: ຖ້າທັງສອງບໍ່ມີ 0 ແມ່ນ
ກັບຄືນ; ຖ້າ a ບໍ່ມີ, 1 ຖືກສົ່ງຄືນ; ຖ້າ b ບໍ່ມີ 0 ຖືກສົ່ງຄືນ; ຖ້າ
ພວກເຂົາເຈົ້າມີອາຍຸເທົ່າທຽມກັນ 0 ຖືກກັບຄືນ.
o []: ຕົວປະຕິບັດການດັດສະນີດຶງເອົາຕົວອັກສອນຈາກຕົວແປສະຕຣິງ ຫຼືຄົງທີ່: ມັນ
ຕອບສະຕຣິງເປັນ ມູນຄ່າ. ດັ່ງນັ້ນ, ຄໍາຖະແຫຼງຕໍ່ໄປນີ້ລວບລວມ OK:
// ສົມມຸດວ່າ str1 ແລະ str2 ແມ່ນສະຕຣິງ
str1 = str2[3];
ແຕ່ຄໍາຖະແຫຼງຕໍ່ໄປນີ້ຈະບໍ່ລວບລວມ:
str2[3] = "a";
ສະຕຣິງຫວ່າງເປົ່າຈະຖືກສົ່ງຄືນຖ້າຄ່າດັດສະນີທີ່ບໍ່ຖືກຕ້ອງຖືກສະໜອງໃຫ້.
o ຕົວປະຕິບັດການ `backtic` (`ສາຍ cmd`)
ສະຕຣິງທີ່ວາງໄວ້ລະຫວ່າງສອງ backticks ຖືກປະຕິບັດໂດຍ popen(3) ຫນ້າທີ່. ໄດ້
ຜົນຜະລິດມາດຕະຖານ gererated ໂດຍຄໍາສັ່ງທີ່ເກັບໄວ້ໃນ string argument ແມ່ນ
ກັບຄືນມາເປັນບັນຊີລາຍຊື່. ບັນຊີລາຍຊື່ຫວ່າງເປົ່າຊີ້ໃຫ້ເຫັນວ່າຄໍາສັ່ງບໍ່ສາມາດຖືກປະຕິບັດໄດ້.
ຄໍາສັ່ງທີ່ສາມາດປະຕິບັດໄດ້ແຕ່ບໍ່ໄດ້ຜະລິດຜົນຜະລິດໃດໆສົ່ງຄືນບັນຊີລາຍຊື່
ປະກອບດ້ວຍອົງປະກອບຫວ່າງເປົ່າ. ຄວາມຜິດພາດມາດຕະຖານຂອງຄໍາສັ່ງການຖ່າຍທອດຜົນຜະລິດບໍ່ແມ່ນ
ເກັບກໍາໂດຍຕົວປະຕິບັດການ backtick. ຢ່າງໃດກໍຕາມ, ການປ່ຽນເສັ້ນທາງແກະມາດຕະຖານອາດຈະເປັນ
ໃຊ້ເພື່ອເກັບກຳຜົນຜະລິດສະຕຣີມຄວາມຜິດພາດມາດຕະຖານ. ຕົວຢ່າງ:
printf(`"ls"`); // ພິມອົງປະກອບໃນ
// ໄດເລກະທໍລີປະຈຸບັນ
ຫນ້າທີ່ກໍານົດໄວ້ລ່ວງຫນ້າ eval(string cmd) ປະຕິບັດຕົວຄືກັບ backtick
operator: ພວກມັນແມ່ນຄໍາສັບຄ້າຍຄືກັນ.
ພິມລາຍການ ໂຕປະຕິບັດການ:
ສໍາລັບການ ບັນຊີລາຍຊື່ ປະເພດຕົວແປ ແລະ/ຫຼືຄ່າຂອງຕົວປະຕິບັດການຕໍ່ໄປນີ້ແມ່ນມີຢູ່:
o a + b: ກັບຄືນມາໃໝ່ ບັນຊີລາຍຊື່ ມູນຄ່າທີ່ປະກອບດ້ວຍ concatenation ຂອງ ບັນຊີລາຍຊື່ ຄ່າ a ແລະ
b. ນີ້ແມ່ນ ບໍ່ ການດໍາເນີນງານທີ່ກໍານົດໄວ້: ຖ້າຫາກວ່າອົງປະກອບປະກົດວ່າທັງສອງໃນ a ແລະໃນ b, ພວກເຂົາຈະ
ປາກົດສອງຄັ້ງໃນບັນຊີລາຍຊື່ຜົນໄດ້ຮັບ (ຊຸດເພີ່ມແມ່ນສະຫນອງໃຫ້ໂດຍ built-in
ຫນ້າທີ່ ລາຍການ).
o a - b: ກັບຄືນມາໃໝ່ ບັນຊີລາຍຊື່ ຄ່າທີ່ປະກອບດ້ວຍອົງປະກອບໃນ a ທີ່ບໍ່ມີ
in b. ນີ້ is ການປະຕິບັດການກໍານົດຄວາມແຕກຕ່າງ: ບັນຊີລາຍຊື່ທີ່ສົ່ງຄືນມີອົງປະກອບທັງຫມົດ
in a ທີ່ບໍ່ແມ່ນອົງປະກອບຂອງ b.
o a += b: ອົງປະກອບໃນ b ຖືກເພີ່ມເຂົ້າໃນອົງປະກອບໃນ a, ເຊິ່ງຈະຕ້ອງເປັນ ບັນຊີລາຍຊື່
ຕົວແປ. ນີ້ແມ່ນ ບໍ່ ການດໍາເນີນງານທີ່ກໍານົດໄວ້.
o a -= b: ອົງປະກອບໃນ b ຖືກໂຍກຍ້າຍອອກຈາກອົງປະກອບໃນ a, ເຊິ່ງຈະຕ້ອງເປັນ ບັນຊີລາຍຊື່
ຕົວແປ. ນີ້ is ການດໍາເນີນງານທີ່ກໍານົດໄວ້: ອົງປະກອບທັງຫມົດຂອງ a ທີ່ພົບເຫັນຢູ່ໃນ b ມີ
ເອົາອອກຈາກ a.
o ລາຍຊື່ການປຽບທຽບຄວາມສະເຫມີພາບ: ຜູ້ປະກອບການ != ແລະ == ອາດຈະຖືກນໍາໃຊ້ກັບ ບັນຊີລາຍຊື່ ຄຸນຄ່າຫຼື
ຕົວແປ. ຜູ້ປະກອບການ == ຕອບ 1 ຖ້າທັງສອງລາຍການມີອົງປະກອບໂດຍອົງປະກອບຄືກັນ
ອົງປະກອບ, ຖ້າບໍ່ດັ່ງນັ້ນ 0 ຖືກສົ່ງຄືນ. ຜູ້ປະກອບການ != ປີ້ນກັບຜົນໄດ້ຮັບຂອງ ==.
o !a: ບູລີນ ! operator ກັບຄືນ 1 ຖ້າ ບັນຊີລາຍຊື່ a ແມ່ນຫວ່າງເປົ່າ, ຖ້າບໍ່ດັ່ງນັ້ນ 0 ແມ່ນ
ກັບຄືນມາ.
o []: ຕົວປະຕິບັດການດັດສະນີດຶງເອົາອົງປະກອບລາຍຊື່ຈາກຕົວແປລາຍຊື່: ມັນສົ່ງຄືນ a
string ເປັນ ມູນຄ່າ. ດັ່ງນັ້ນ, ຄໍາຖະແຫຼງຕໍ່ໄປນີ້ລວບລວມ OK:
// assume lst is a list, str ເປັນ string
str = lst[3];
ແຕ່ຄໍາຖະແຫຼງຕໍ່ໄປນີ້ຈະບໍ່ລວບລວມ:
lst[3] = str;
ສະຕຣິງຫວ່າງເປົ່າຈະຖືກສົ່ງຄືນຖ້າຄ່າດັດສະນີທີ່ບໍ່ຖືກຕ້ອງຖືກສະໜອງໃຫ້.
ແມ່ພິມສໍາລັບ:
ປະເພດສຽງໂຫວດທັງຫມົດອາດຈະຖືກປະຕິບັດໂດຍໃຊ້ມາດຕະຖານ C cast-operator ເພື່ອສົ່ງສັນຍານ:
o Strings ກັບ ints ແລະໃນທາງກັບກັນ ((int)"123", (string)55)
o Strings ກັບລາຍການ (ບັນຊີລາຍຊື່ ອັນດັບທີ = (ບັນຊີລາຍຊື່) "ສະບາຍດີ")
ອັດຕາການໄຫລ ການຄວບຄຸມ
Icmake ສະເຫນີຊຸດຍ່ອຍຕໍ່ໄປນີ້ຂອງ Cຖະແຫຼງການຂອງ. ເຂົາເຈົ້າສາມາດຖືກນໍາໃຊ້ເປັນໃນ C
ພາສາໂປລແກລມ
o ການສະແດງອອກ ;
ຄໍາຖະແຫຼງການສະແດງອອກທໍາມະດາ;
o ຄໍາຖະແຫຼງການປະສົມ
ຕົວແປຂອງປະເພດໃດ ໜຶ່ງ ອາດຈະຖືກ ກຳ ນົດແລະເລີ່ມຕົ້ນຢູ່ບ່ອນໃດກໍ່ຕາມພາຍໃນສານປະສົມ
ຖະແຫຼງການ. ໄດ້ ການເບິ່ງເຫັນ ຂອງຕົວແປເລີ່ມຕົ້ນຢູ່ໃນຈຸດຂອງຄໍານິຍາມຂອງມັນ.
o if (ສະພາບ) ຄໍາຖະແຫຼງທີ່
ພາຍໃນເງື່ອນໄຂຕົວແປອາດຈະຖືກກໍານົດແລະເລີ່ມຕົ້ນ. ຕົວຢ່າງ:
ຖ້າ (string str = getText())
ຂະບວນການ(str);
ໃນຕົວຢ່າງນີ້, ຂະບວນການ ບໍ່ໄດ້ເອີ້ນວ່າຖ້າຫາກວ່າ getText () ຕອບສະຕຣິງຫວ່າງເປົ່າ. ໄດ້
ຕົວແປ str ບໍ່ມີທັງກ່ອນຫຼືຫຼັງຈາກ if ຄໍາຖະແຫຼງທີ່.
o if (ສະພາບ) ຄໍາຖະແຫຼງທີ່ ອື່ນ ຄໍາຖະແຫຼງທີ່
ເຊັ່ນດຽວກັນກັບຄໍາຖະແຫຼງທີ່ຜ່ານມາ, ພາຍໃນເງື່ອນໄຂຕົວແປອາດຈະຖືກກໍານົດແລະ
ເລີ່ມຕົ້ນ.
o ສໍາລັບການ (ໃນມັນ; ສະພາບ; ເພີ່ມຂຶ້ນ) ຄໍາຖະແຫຼງທີ່
ຕົວແປ (ຂອງປະເພດດຽວ) ອາດຈະໄດ້ຮັບການເລີ່ມຕົ້ນ (ແລະເລືອກທາງເລືອກ) ໃນ
ໃນມັນ ພາກສ່ວນ. ໄດ້ ໃນມັນ, ສະພາບ ແລະ ການເພີ່ມຂື້ນ ພາກສ່ວນອາດຈະຫວ່າງເປົ່າ. ໄດ້
ພາກສ່ວນເງື່ອນໄຂທີ່ຫວ່າງເປົ່າຖືກຕີຄວາມວ່າ 'ສະເຫມີ ທີ່ແທ້ຈິງ'.
o ໃນຂະນະທີ່ (ສະພາບ) ຄໍາຖະແຫຼງທີ່
ພາຍໃນເງື່ອນໄຂຕົວແປອາດຈະຖືກກໍານົດແລະເລີ່ມຕົ້ນ.
ການເສີມ do ... ໃນຂະນະທີ່ () ບໍ່ມີໃບປະກາດ. ໃຫ້ສັງເກດວ່າການກໍານົດ a
ຕົວແປ, ການນໍາໃຊ້ການສະແດງອອກເບື້ອງຕົ້ນຫມາຍຄວາມວ່າການເລີ່ມຕົ້ນ
ການສະແດງອອກແມ່ນປະຕິບັດໃນແຕ່ລະ iteration ຂອງ ໃນຂະນະທີ່ ຖະແຫຼງການ. ດັ່ງນັ້ນຕໍ່ໄປນີ້
ຄໍາຖະແຫຼງການຈະບໍ່ມີທີ່ສິ້ນສຸດ, ແລະຈະສະແດງນ້ໍາທີ່ບໍ່ມີທີ່ສິ້ນສຸດຂອງຄຸນຄ່າ 10:
ໃນຂະນະທີ່ (int x = 10)
printf(x--, "\n");
o ກັບມາ;, ແລະ ການກັບຄືນມາ ການສະແດງອອກ;
ທໍາມະດາ ການກັບຄືນມາ ຖະແຫຼງການສາມາດຖືກນໍາໃຊ້ໃນ void ຫນ້າທີ່, ແລະ ການກັບຄືນມາ ການສະແດງອອກ
ຄໍາຖະແຫຼງທີ່ຖືກນໍາໃຊ້ໃນປະເພດອື່ນໆຂອງຫນ້າທີ່. ຫນ້າທີ່ ຕົ້ນຕໍ ມີປະເພດກັບຄືນ
void ແລະອື່ນໆໃນ ຕົ້ນຕໍ ທົ່ງພຽງ ການກັບຄືນມາ ຖະແຫຼງການສາມາດນໍາໃຊ້ໄດ້. ໂດຍຄ່າເລີ່ມຕົ້ນເປັນ icmake
ຄ່າອອກຂອງສະຄຣິບເທົ່າກັບ 0. ໃຊ້ຟັງຊັນໃນຕົວ ການທ່ອງທ່ຽວ (ເບິ່ງຂ້າງລຸ່ມນີ້) ເພື່ອກໍານົດ
ຄ່າທາງອອກອື່ນໆ.
Be ແນະນຳ: ພຶດຕິກໍາຂອງຟັງຊັນທີ່ບໍ່ແມ່ນ void ທີ່ບໍ່ສົ່ງຄືນຄ່າແມ່ນບໍ່ໄດ້ກໍານົດ.
o ພັກຜ່ອນ
ໃບ ສໍາລັບການ ແລະ ໃນຂະນະທີ່ ຖະແຫຼງການ, overruing ເງື່ອນໄຂຂອງຖະແຫຼງການ.
o ດໍາເນີນການຕໍ່
ສືບຕໍ່ດ້ວຍ iteration ຕໍ່ໄປຂອງ a ສໍາລັບການ or ໃນຂະນະທີ່ ຄໍາຖະແຫຼງທີ່.
o ອອກ(ສະແດງອອກ)
ສິ້ນສຸດການປະຕິບັດຂອງ an icmake-script. ໄດ້ ການສະແດງອອກ ຕ້ອງປະເມີນຜົນເປັນ int
ຄ່າ, ເຊິ່ງກາຍເປັນຄ່າອອກຂອງສະຄຣິບ.
ກຳນົດໄວ້ລ່ວງໜ້າ FUNCTIONS
Icmake ສະເຫນີຫນ້າທີ່ກໍານົດໄວ້ລ່ວງຫນ້າດັ່ງຕໍ່ໄປນີ້, ເຊິ່ງສາມາດນໍາໃຊ້ໄດ້ທຸກບ່ອນໃນ icmake
ສະຄຣິບ. ພາບລວມຕໍ່ໄປນີ້ແມ່ນຈັດລຳດັບຕາມຕົວອັກສອນຕາມຊື່ຟັງຊັນ.
o void Arghead(string h)
ຫນ້າທີ່ຜູ້ຊ່ວຍຂອງ exec() (ເບິ່ງຂ້າງລຸ່ມນີ້ຢູ່ທີ່ exec()): ກໍານົດ 'ຫົວການໂຕ້ຖຽງ',
ທີ່ຈະນໍາໃຊ້ກັບ exec(). ໂດຍຄ່າເລີ່ມຕົ້ນ, 'ຫົວອາກິວເມັນ' ແມ່ນສະຕຣິງຫວ່າງເປົ່າ.
o void ຫາງ (ສາຍ t)
ຫນ້າທີ່ຜູ້ຊ່ວຍຂອງ exec() (ເບິ່ງຂ້າງລຸ່ມນີ້ຢູ່ທີ່ exec()): ກໍານົດ 'ຫາງການໂຕ້ຖຽງ',
ທີ່ຈະນໍາໃຊ້ກັບ exec(). ໂດຍຄ່າເລີ່ມຕົ້ນ, 'ຫາງຂອງອາກິວເມັນ' ແມ່ນສະຕຣິງຫວ່າງເປົ່າ.
o int ascii(string s)
ສົ່ງຄືນຕົວອັກສອນທຳອິດຂອງ s ເປັນ int; ຕົວຢ່າງ: ascii("A") ກັບຄືນ 65;
o string ascii(int i)
ຜົນຕອບແທນ i ເປັນ string, eg, ASCII(65) ຕອບສະຕຣິງ "TO";
o string change_base(string ແຟ້ມ, string ຖານໃຫມ່)
ປ່ຽນຊື່ພື້ນຖານຂອງ ເອກະສານ, ສົ່ງຄືນຊື່ທີ່ປ່ຽນ. ຕົວຢ່າງ:
change_base("/path/demo.im", "ອອກ") ກັບຄືນມາ "/path/out.im";
o string change_ext(string ແຟ້ມ, string ໃໝ່ຕໍ່ໄປ)
ການປ່ຽນແປງການຂະຫຍາຍຂອງ ເອກະສານ, ສົ່ງຄືນຊື່ທີ່ປ່ຽນ. ຕົວຢ່າງ:
rss_changeExt("source.cc", "o") ກັບຄືນມາ "ແຫຼ່ງ.o";
o string change_path(string ແຟ້ມ, string ເສັ້ນທາງໃໝ່)
ປ່ຽນແປງສະເພາະເສັ້ນທາງຂອງ ເອກະສານ, ສົ່ງຄືນຊື່ທີ່ປ່ຽນ. ຕົວຢ່າງ:
change_path("tmp/binary", "/ usr / ຖັງ") ກັບຄືນມາ "/usr/bin/binary". ໃຫ້ສັງເກດວ່າ
/-separator ແມ່ນ inserted ຖ້າຫາກວ່າຕ້ອງການ.
o string chdir(string newdir)
ປ່ຽນແປງໄດເລກະທໍລີການເຮັດວຽກຂອງສະຄຣິບ, ສົ່ງຄືນ dir ທີ່ຜ່ານມາເປັນຢ່າງແທ້ຈິງ
ເສັ້ນທາງ
ການນໍາໃຊ້ chdir(".") ເພື່ອໃຫ້ໄດ້ຮັບການເຮັດວຽກໃນປັດຈຸບັນ, chdir("") ອາດຈະຖືກນໍາໃຊ້ເພື່ອ
ໄດ້ຮັບການເລີ່ມຕົ້ນການເຮັດວຽກລະບົບ (ການທໍາງານນີ້ໄດ້ຖືກແຍກອອກໃນການປ່ອຍ
ກ່ອນ 7.00, ແຕ່ປະຈຸບັນໄດ້ດໍາເນີນການ). ຟັງຊັນຢຸດການ
icmake-script ຖ້າຫາກວ່າລະບຸໄວ້ ໃໝ່ ບໍ່ມີຢູ່
o string chdir(int ການກວດສອບ, string newdir)
ຫນ້າທີ່ດຽວກັນກັບຫນ້າທີ່ທີ່ຜ່ານມາ, ແຕ່ໂດຍການລະບຸ ການກວດສອບ as
P_NOCHEC. ຟັງຊັນຈະບໍ່ຢຸດສະຄຣິບ. ແທນທີ່ຈະ, ມັນຈະກັບຄືນມາ
script ໄດເລກະທໍລີທີ່ເຮັດວຽກໃນປະຈຸບັນ.
o cmdhead(string h)
ຫນ້າທີ່ຜູ້ຊ່ວຍຂອງ exec() (ເບິ່ງຂ້າງລຸ່ມນີ້ຢູ່ທີ່ exec()): ກໍານົດເປັນ 'ຫົວຄໍາສັ່ງ', to
ຖືກນໍາໃຊ້ກັບ exec(). ໂດຍຄ່າເລີ່ມຕົ້ນ, 'ຫົວຄໍາສັ່ງ' ແມ່ນສາຍທີ່ຫວ່າງເປົ່າ.
o cmdtail(string t)
ຫນ້າທີ່ຜູ້ຊ່ວຍຂອງ exec() (ເບິ່ງຂ້າງລຸ່ມນີ້ຢູ່ທີ່ exec()): ກໍານົດເປັນ 'ຫາງຄໍາສັ່ງ', to
ຖືກນໍາໃຊ້ກັບ exec(). ໂດຍຄ່າເລີ່ມຕົ້ນ, 'ຫາງຄໍາສັ່ງ' ແມ່ນສາຍທີ່ຫວ່າງເປົ່າ.
o echo(int ເລືອກ)
ການຄວບຄຸມ echoing ຂອງໂຄງການທີ່ເອີ້ນວ່າ (ແລະການໂຕ້ຖຽງຂອງເຂົາເຈົ້າ), ລະບຸ OFF ຖ້າສຽງດັງ
ບໍ່ໄດ້ຮ້ອງຂໍ. ໂດຍຄ່າເລີ່ມຕົ້ນ ສຽງສະທ້ອນ(ON) ຖືກນໍາໃຊ້.
o string ອົງປະກອບ(int ດັດສະນີ, ບັນຊີລາຍຊື່ (ຫຼື ສະຕຣິງ) var)
ປະຕິບັດຄືກັນກັບຕົວປະຕິບັດການດັດສະນີ: ອ້າງອີງໃສ່ດັດຊະນີ ([]) ປະຕິບັດການໃນ
ສ່ວນ ຜູ້ປະກອບການ.
o ບັນຊີລາຍຊື່ eval(string str)
ຟັງຊັນນີ້ປະຕິບັດຄືກັນກັບຕົວປະຕິບັດການ backtick. ຕົວຢ່າງທີ່ສະຫນອງໃຫ້
ດັ່ງນັ້ນຕົວປະຕິບັດການ backtick ສາມາດຖືກຂຽນໄວ້ເຊັ່ນນີ້:
printf(eval("ls")); // ພິມອົງປະກອບໃນປະຈຸບັນ
// ໄດເລກະທໍລີ
o exec(string cmd, ... )
ປະຕິບັດຄໍາສັ່ງດ້ວຍການໂຕ້ຖຽງ. ແຕ່ລະອາກິວເມັນຈະຖືກນຳໜ້າດ້ວຍ Arghead()'s
argument ແລະ postfixed ໂດຍ ຫາງ()ການໂຕ້ຖຽງຂອງ. ໃຫ້ສັງເກດວ່າບໍ່ມີການໃສ່ຊ່ອງຫວ່າງ
ລະຫວ່າງ Arghead()ເນື້ອໃນຂອງ, ການໂຕ້ຖຽງທີ່ເຫມາະສົມ, ແລະ ຫາງ()ການໂຕ້ຖຽງຂອງ. ທັງໝົດ
ດັ່ງນັ້ນການໂຕ້ຖຽງທີ່ຖືກດັດແປງແມ່ນ concatenated, ເວລານີ້ແຍກອອກໂດຍຊ່ອງຫວ່າງດຽວ, ແລະ
ຫຼັງຈາກນັ້ນ cmdhead()ເນື້ອໃນຂອງຖືກໃສ່ລະຫວ່າງຄໍາສັ່ງແລະການໂຕ້ຖຽງທໍາອິດ
(ຢູ່ດ້ານໃດດ້ານໜຶ່ງທີ່ຂັ້ນດ້ວຍຊ່ອງຫວ່າງດຽວ) ແລະ cmdtail()ເນື້ອໃນຂອງແມ່ນໄດ້ຕໍ່ທ້າຍ
ການໂຕ້ຖຽງ (ອີກເທື່ອຫນຶ່ງ, ແຍກອອກໂດຍຫວ່າງເປົ່າ). PATH ຖືກຄົ້ນຫາເພື່ອຊອກຫາສະຖານທີ່
cmd. 0 ຖືກສົ່ງຄືນ.
o exec(int checkcmd, string cmd, ... )
ຫນ້າທີ່ດຽວກັນກັບຫນ້າທີ່ທີ່ຜ່ານມາ, ແຕ່ໂດຍການລະບຸ ການກວດສອບ as
ບໍ່ໄດ້ກວດເບິ່ງ ຟັງຊັນຈະບໍ່ຢຸດສະຄຣິບ. ແທນທີ່ຈະ, ມັນຈະກັບຄືນມາ
ເອີ້ນວ່າສະຖານະການອອກຄໍາສັ່ງ, ຫຼື 0x7f00 ຖ້າບໍ່ພົບຄໍາສັ່ງ.
o execute(string cmd, string cmdhd, string Arghd, ..., string argtl, string cmdtl)
ຄືກັນກັບ exec(), ແຕ່ຕ້ອງລະບຸຫົວ/ຫາງ ແລະຫົວ/ຫາງ argument.
ຄໍາສັ່ງປະຕິບັດຕົວຈິງເລີ່ມຕົ້ນດ້ວຍ cmd, ຕາມດ້ວຍ cmdhd. ຕໍ່ໄປແມ່ນຊຸດ
ຂອງການໂຕ້ຖຽງດັ່ງຕໍ່ໄປນີ້, ແຕ່ລະປິດລ້ອມໂດຍ arghd ແລະ argtl. ຄໍາສັ່ງສິ້ນສຸດລົງດ້ວຍ
cmdtl. 0 ຖືກສົ່ງຄືນ
o ປະຕິບັດ(int ການກວດສອບ, string cmd, string cmdhd, string Arghd, ..., string argtl,
string cmdtl)
ຫນ້າທີ່ດຽວກັນກັບຫນ້າທີ່ທີ່ຜ່ານມາ, ແຕ່ໂດຍການລະບຸ ການກວດສອບ as
ບໍ່ໄດ້ກວດເບິ່ງ ຟັງຊັນຈະບໍ່ຢຸດສະຄຣິບ. ແທນທີ່ຈະ, ມັນຈະກັບຄືນມາ
ເອີ້ນວ່າສະຖານະການອອກຄໍາສັ່ງ, ຫຼື 0x7f00 ຖ້າບໍ່ພົບຄໍາສັ່ງ.
o int ມີຢູ່(string ແຟ້ມ)
ຕອບຄ່າທີ່ບໍ່ແມ່ນສູນ if ເອກະສານ ມີຢູ່, ຖ້າບໍ່ດັ່ງນັ້ນ 0 ຖືກສົ່ງຄືນ.
o ບັນຊີລາຍຊື່ fgets(string ແຟ້ມ, ບັນຊີລາຍຊື່ ຊົດເຊີຍ)
ຫມາຍເຫດ: in icmake ຮຸ່ນ 8.00.00 ຕົ້ນແບບຂອງຟັງຊັນນີ້ຖືກປ່ຽນຈາກ
ບັນຊີລາຍຊື່ fgets(string ແຟ້ມ, int ຊົດເຊີຍ) to ບັນຊີລາຍຊື່ fgets(string ແຟ້ມ, ບັນຊີລາຍຊື່ ຊົດເຊີຍ).
ແຖວຕໍ່ໄປທີ່ພົບເຫັນຢູ່ໃນ offset ທີ່ມີຢູ່ໃນ ຊົດເຊີຍ ແມ່ນອ່ານຈາກ ເອກະສານ. ຜ່ານ
ບັນຊີລາຍຊື່ຫວ່າງເປົ່າກັບ fgets ອ່ານ ເອກະສານ ຕັ້ງແຕ່ເລີ່ມຕົ້ນ.
ມັນສົ່ງຄືນບັນຊີລາຍຊື່ທີ່ບັນຈຸເປັນອົງປະກອບທໍາອິດຂອງມັນເນື້ອໃນຂອງແຖວທີ່ອ່ານ
(ໂດຍບໍ່ມີການ \n line terminator), ເປັນອົງປະກອບທີສອງຂອງມັນ terminator ຂອງສາຍ `\n'
(ຖ້າພົບ), ແລະເປັນອົງປະກອບທີສາມຂອງມັນ string OK ຖ້າເສັ້ນໄດ້ສໍາເລັດ
ອ່ານ, ປະຕິບັດ ຖ້າການອ່ານຈາກໄຟລ໌ລົ້ມເຫລວ. ເມື່ອອ່ານຢູ່ EOF ບັນຊີລາຍຊື່ເປົ່າແມ່ນ
ກັບຄືນ. ບັນຊີລາຍຊື່ທີ່ສົ່ງຄືນອາດຈະປະກອບດ້ວຍອົງປະກອບເພີ່ມເຕີມ, ເຊິ່ງແມ່ນພາຍໃນ
ໃຊ້ໂດຍ fgets ເມື່ອອ່ານແຖວຕໍ່ໄປ.
ເພື່ອອ່ານຫຼາຍແຖວ, ເລີ່ມຕົ້ນໂດຍການຖ່າຍທອດບັນຊີລາຍຊື່ເປົ່າເປັນ ໄດ້ຮັບ ການໂຕ້ຖຽງທີສອງ.
ເພື່ອອ່ານແຖວຕໍ່ໄປ, ໃຫ້ຜ່ານບັນຊີລາຍຊື່ທີ່ສົ່ງຄືນກ່ອນຫນ້ານີ້ໄປຫາ fgets ຂອງ ຄັ້ງທີສອງ
ການໂຕ້ຖຽງ.
ນີ້ແມ່ນຕົວຢ່າງທີ່ສະແດງໃຫ້ເຫັນວິທີການອ່ານໄຟລ໌ທີ່ສົມບູນ:
ລາຍການ ret;
ໃນຂະນະທີ່ (1)
{
ret = fgets("ຊື່ໄຟລ໌", ret);
ຖ້າ (!ret)
ທໍາລາຍ;
ຂະບວນການ(ret[0], ret[1]);
}
o int fprintf(string ຊື່ເອກະສານ, ... )
ຕື່ມຂໍ້ມູນທັງໝົດ (ໝາຍຈຸດທີ່ແຍກອອກ) ຕໍ່ທ້າຍກັບໄຟລ໌ ຊື່ເອກະສານ. ຕອບຈໍານວນ
ການໂຕ້ຖຽງທີ່ພິມອອກ.
o int fprintf(string ຊື່ເອກະສານ, string ຮູບແບບ, ... )
ຕື່ມຂໍ້ມູນທັງໝົດ (ໝາຍຈຸດທີ່ແຍກອອກ) ຕໍ່ທ້າຍກັບໄຟລ໌ ຊື່ເອກະສານ. ຕອບຈໍານວນ
ການໂຕ້ຖຽງທີ່ພິມອອກ.
If ຮູບແບບ ປະກອບມີຕົວຍຶດ %1 .. %n ຜົນຜະລິດຖືກຈັດຮູບແບບ (ເບິ່ງ
ຮູບແບບ). ໃຫ້ສັງເກດວ່າໃນກໍລະນີນີ້ການນັບການໂຕ້ຖຽງ (ຍັງ) ເລີ່ມຕົ້ນນອກເຫນືອຈາກ
format string: argument ທໍາອິດຕໍ່ໄປນີ້ ຮູບແບບ ແມ່ນຫມາຍເຖິງ %1.
o string get_base(string ແຟ້ມ)
ຕອບຊື່ພື້ນຖານຂອງ ເອກະສານ. ຊື່ພື້ນຖານແມ່ນໄຟລ໌ທີ່ບໍ່ມີຄໍານໍາຫນ້າເສັ້ນທາງຂອງມັນ
ແລະໂດຍບໍ່ມີການຂະຫຍາຍຂອງມັນ. ການຂະຫຍາຍແມ່ນຂໍ້ມູນທັງຫມົດເລີ່ມຕົ້ນໃນຕອນສຸດທ້າຍ
ຈຸດໃນຊື່ໄຟລ໌. ຖ້າບໍ່ພົບຈຸດສຸດທ້າຍ, ຊື່ໄຟລ໌ແມ່ນຊື່ພື້ນຖານ.
ຕົວຢ່າງ, ຊື່ພື້ນຖານຂອງ ab ເທົ່າກັນ a, ຊື່ພື້ນຖານຂອງ abc ເທົ່າກັນ ab, ຖານ
ຊື່ຂອງ a/b/c ເທົ່າກັນ c.
o string getch()
ສົ່ງຄືນປຸ່ມກົດຕໍ່ໄປເປັນສະຕຣິງ (ການກົດ 'Enter' ແມ່ນບໍ່ຈໍາເປັນ).
o string get_dext(string ແຟ້ມ)
ສົ່ງຄືນສ່ວນຂະຫຍາຍຂອງ ເອກະສານ, ລວມທັງຈຸດແຍກ. ການຂະຫຍາຍແມ່ນທັງຫມົດ
ຂໍ້ມູນເລີ່ມຕົ້ນຈາກຈຸດສຸດທ້າຍຂອງຊື່ໄຟລ໌.
ຖ້າບໍ່ພົບຈຸດສຸດທ້າຍ, ສະຕຣິງຫວ່າງເປົ່າຈະຖືກສົ່ງຄືນ.
o ບັນຊີລາຍຊື່ getenv(string envvar)
ຕອບຄ່າຂອງຕົວແປສະພາບແວດລ້ອມ envvar ໃນລາຍການທີ່ມີສອງອົງປະກອບ:
ອົງປະກອບທໍາອິດຊີ້ໃຫ້ເຫັນວ່າຕົວແປສະພາບແວດລ້ອມໄດ້ຖືກກໍານົດ (ຄ່າ
"1") ຫຼືບໍ່ (ຄ່າ "0");
ອົງປະກອບທີສອງຊີ້ໃຫ້ເຫັນມູນຄ່າຂອງຕົວແປສະພາບແວດລ້ອມ.
ຕົວແປສະພາບແວດລ້ອມມີຮູບແບບ variable=ຄ່າ, ແລະຖ້າຫາກວ່າກໍານົດບັນຊີລາຍຊື່ຂອງ
ອົງປະກອບທີສອງປະກອບດ້ວຍ ມູນຄ່າ. ຖ້າຄ່າຫວ່າງເປົ່າ, ຕົວແປແມ່ນຖືກກໍານົດ, ແຕ່
ບໍ່ມີຂໍ້ຄວາມທີ່ກ່ຽວຂ້ອງກັບມັນ.
o string get_ext(string ແຟ້ມ)
ສົ່ງຄືນສ່ວນຂະຫຍາຍຂອງ ເອກະສານ, ຍົກເວັ້ນຈຸດທີ່ແຍກອອກ. ການຂະຫຍາຍແມ່ນທັງຫມົດ
ຂໍ້ມູນເລີ່ມຕົ້ນຈາກຈຸດສຸດທ້າຍໃນຊື່ໄຟລ໌.
ຖ້າບໍ່ພົບຈຸດສຸດທ້າຍ, ສະຕຣິງຫວ່າງເປົ່າຈະຖືກສົ່ງຄືນ.
o int getpid()
ສົ່ງຄືນ process-id ຂອງຕົວແປລະຫັດ icmake byte icm-exec.
o string ໄດ້ຮັບ ()
ສົ່ງຄືນແຖວຕໍ່ໄປທີ່ອ່ານຈາກແປ້ນພິມເປັນ a string. ເສັ້ນທີ່ເຂົ້າມາໃນ
ແປ້ນພິມຕ້ອງຖືກຢຸດໂດຍກະແຈ 'Enter', ເຊິ່ງບໍ່ໄດ້ເກັບຮັກສາໄວ້ໃນການສົ່ງຄືນ
string
o string get_path(string ແຟ້ມ)
ໃຫ້ຜົນເປັນ path-prefix ຂອງ ເອກະສານ. ຄໍານໍາຫນ້າເສັ້ນທາງແມ່ນຂໍ້ມູນທັງຫມົດເຖິງ (ແລະ
ລວມເຖິງ) ຕົວແຍກໄດເລກະທໍລີສຸດທ້າຍ (ຊຶ່ງແມ່ນ, ຂຶ້ນກັບການດໍາເນີນງານ
ລະບົບ, ເປັນ forward- ຫຼື backslash).
ຖ້າບໍ່ພົບເສັ້ນທາງ, ເສັ້ນຫວ່າງເປົ່າຈະຖືກສົ່ງຄືນ.
o int listfind(ລາຍການ ທຳອິດ, string str)
ສົ່ງຄືນດັດຊະນີທຳອິດໃນ ອັນດັບທີ ບ່ອນທີ່ຊ່ອຍແນ່ str ຖືກພົບເຫັນ, ຫຼື -1 ຖ້າ ອັນດັບທີ ບໍ່
ບັນຈຸ str.
o int listlen(ລາຍການ l)
ຕອບຈໍານວນອົງປະກອບໃນ ບັນຊີລາຍຊື່.
o ບັນຊີລາຍຊື່ listunion(ລາຍການ lhs, ບັນຊີລາຍຊື່ rhs)
ສົ່ງຄືນລາຍຊື່ທີ່ປະກອບດ້ວຍສະຫະພັນຂອງອົງປະກອບໃນ lhs ແລະ rhs.
o ບັນຊີລາຍຊື່ listunion(ລາຍການ ທຳອິດ, string str)
ສົ່ງຄືນລາຍຊື່ທີ່ປະກອບດ້ວຍສະຫະພັນຂອງອົງປະກອບໃນ ອັນດັບທີ ແລະ str.
o ບັນຊີລາຍຊື່ makelist(string ຫນ້າກາກ)
ສົ່ງຄືນລາຍຊື່ຂອງໄຟລ໌ທັງໝົດທີ່ກົງກັນ ຫນ້າກາກ. ຕົວຢ່າງ: ລາຍຊື່ຜູ້ສ້າງ("*.c") ສົ່ງຄືນລາຍຊື່
ມີໄຟລ໌ທັງໝົດທີ່ລົງທ້າຍດ້ວຍ .c.
o ບັນຊີລາຍຊື່ makelist(ປະເພດ, string ຫນ້າກາກ)
ຄືກັນກັບຫນ້າທີ່ທີ່ຜ່ານມາ, ແຕ່ປະເພດຂອງອົງປະກອບຂອງໄດເລກະທໍລີອາດຈະເປັນ
ລະບຸເປັນການໂຕ້ຖຽງທຳອິດຂອງມັນ:
ຄວາມ ໝາຍ ສັນຍາລັກ
IS_ALL ໄດ້ຮັບລາຍການໄດເລກະທໍລີທັງໝົດ
IS_DIR ຮັບເອົາໄດເລກະທໍລີທັງໝົດ, ລວມທັງ . ແລະ..
IS_FILE ໄດ້ຮັບບັນຊີລາຍຊື່ຂອງໄຟລ໌
IS_SUBDIR ຮັບເອົາໄດເລກະທໍລີຍ່ອຍທັງໝົດ
ໃຫ້ສັງເກດວ່າຮູບແບບ * ຈະບໍ່ກົງກັບລາຍການທີ່ເຊື່ອງໄວ້ພາຍໃຕ້ການດໍາເນີນການປະເພດ Unix
ລະບົບ. ໃຊ້ .* ສໍາລັບວ່າ.
o ບັນຊີລາຍຊື່ makelist(string ຫນ້າກາກ, ໃໝ່ກວ່າ, string ໄຟລ໌ປຽບທຽບ)
ສົ່ງຄືນລາຍຊື່ຂອງໄຟລ໌ທັງໝົດທີ່ກົງກັບໜ້າກາກທີ່ໃໝ່ກວ່າທີ່ສະໜອງໃຫ້
ປຽບທຽບໄຟລ໌. ຜູ້ປະກອບການ younger ອາດຈະຖືກນໍາໃຊ້ແທນ ໃຫມ່ກວ່າ. ໃຫ້ສັງເກດວ່າ ໃຫມ່ກວ່າ ແລະ
younger ແມ່ນຕົວປະຕິບັດການ, ບໍ່ແມ່ນສາຍ.
o ບັນຊີລາຍຊື່ makelist([int = IS_FILE,] string ຫນ້າກາກ, ໃໝ່ກວ່າ, string ໄຟລ໌ປຽບທຽບ)
ຄືກັນກັບຫນ້າທີ່ທີ່ຜ່ານມາ, ແຕ່ ປະເພດ ອາດຈະຖືກລະບຸໄວ້ໃນ ບັນຊີລາຍຊື່ makelist(ປະເພດ,
string ຫນ້າກາກ).
o makelist(string ຫນ້າກາກ, ແກ່, string ໄຟລ໌ປຽບທຽບ)
ເບິ່ງຢູ່ຂ້າງເທິງ; ສົ່ງຄືນລາຍຊື່ຂອງໄຟລ໌ທີ່ເກົ່າກວ່າທີ່ປຽບທຽບໄຟລ໌.
o makelist(ປະເພດ, string ຫນ້າກາກ, ແກ່, string ໄຟລ໌ປຽບທຽບ)
ຄືກັນກັບຫນ້າທີ່ທີ່ຜ່ານມາ, ແຕ່ ປະເພດ ອາດຈະຖືກລະບຸໄວ້ໃນ ບັນຊີລາຍຊື່ makelist(ປະເພດ,
string ຫນ້າກາກ).
o int printf(... )
ສະແດງອາກິວເມັນທັງໝົດ (ໝາຍຈຸດທີ່ແຍກອອກ) ໃສ່ໜ້າຈໍ (ເຊັ່ນ: ສະຕຣີມຜົນຜະລິດມາດຕະຖານ).
ຕອບຈໍານວນອາກິວເມັນທີ່ພິມອອກ.
o int printf(string ຮູບແບບ, ... )
ສະແດງອາກິວເມັນທັງໝົດ (ໝາຍຈຸດທີ່ແຍກອອກ) ໃສ່ໜ້າຈໍ (ເຊັ່ນ: ສະຕຣີມຜົນຜະລິດມາດຕະຖານ).
ຕອບຈຳນວນຂອງອາກິວເມັນທີ່ພິມອອກ (the ຮູບແບບ string ນັບເປັນຫນຶ່ງ argument).
If ຮູບແບບ ປະກອບມີຕົວຍຶດ %1 .. %n ຜົນຜະລິດຖືກຈັດຮູບແບບ (ເບິ່ງ
ຮູບແບບ).
o int putenv(string envvar)
Adds envvar ກັບປະຈຸບັນ (icmake) ສະພາບແວດລ້ອມໃຊ້ຮູບແບບ: "VAR=value".
ກັບຄືນ 0.
o string ປັບຂະໜາດ(string str, int ຄວາມຍາວໃຫມ່) ສົ່ງຄືນສຳເນົາຂອງສະຕຣິງ str, ປັບຂະຫນາດເປັນ
ຄວາມຍາວໃຫມ່ ຕົວລະຄອນ. ຖ້າ ຄວາມຍາວໃຫມ່ ເປັນຄ່າລົບ ຈາກນັ້ນສະຕຣິງຫວ່າງເປົ່າຈະຖືກສົ່ງຄືນ,
if ຄວາມຍາວໃຫມ່ ເກີນໄປ str's ຄວາມຍາວຫຼັງຈາກນັ້ນຕົວອັກສອນທີ່ເພີ່ມໃຫມ່ຈະຖືກເລີ່ມຕົ້ນ
ຊ່ອງຫວ່າງ.
o int ຂະຫນາດຂອງ (ບັນຊີລາຍຊື່ l)
ຄັດຄ້ານ: ໃຊ້ ຟັງ.
o int sizeoflist(ບັນຊີລາຍຊື່ l)
ຄັດຄ້ານ: ໃຊ້ ຟັງ.
o ບັນຊີລາຍຊື່ stat(string ເຂົ້າ)
ຜົນຕອບແທນ ລັດ(2) ຂໍ້ມູນຂອງການເຂົ້າລະບົບ entry ເປັນບັນຊີລາຍຊື່. ບັນຊີລາຍຊື່ກັບຄືນ
ມີສອງອົງປະກອບ: ອົງປະກອບ 0 ແມ່ນ ຄຸນລັກສະນະ ມູນຄ່າ, ອົງປະກອບ 1 ມີຂະຫນາດຂອງ
ໄຟລ໌.
ຄຸນລັກສະນະແມ່ນໄດ້ຮັບການສົ່ງຄືນເປັນ bit-flags, ປະກອບຈາກດັ່ງຕໍ່ໄປນີ້ກໍານົດໄວ້ລ່ວງຫນ້າ
ຄົງທີ່:
S_IFCHR S_IFDIR S_IFREG
S_IREAD S_IWRITE S_IEXEC
ເບິ່ງ ລັດ(2) ຫນ້າຄູ່ມືສໍາລັບຄວາມຫມາຍຂອງຄ່າຄົງທີ່ເຫຼົ່ານີ້.
o ບັນຊີລາຍຊື່ ສະຖິຕິ (ກວດສອບ, string ເຂົ້າ)
ຄືກັນກັບຫນ້າທີ່ທີ່ຜ່ານມາ, ແຕ່ໂດຍການລະບຸ ການກວດສອບ as P_NOCHEC ໜ້າ ທີ່
ຈະບໍ່ຢຸດສະຄຣິບ. ແທນທີ່ຈະ, ມັນກັບຄືນມາ ລັດ(2) ຄ່າກັບຄືນຂອງ.
o int strhr(string str, string ຕົວອັກສອນ)
ສົ່ງຄືນດັດຊະນີທຳອິດໃນ str ບ່ອນທີ່ຕົວລະຄອນໃດຢູ່ໃນ ຖັງ ພົບເຫັນ, ຫຼື -1
if str ບໍ່ມີຕົວອັກສອນໃດໆໃນ ຖັງ.
o int strlen(string str)
ຕອບຈໍານວນຕົວອັກສອນໃນ str (ບໍ່ນັບ 0 ສຸດທ້າຍ).
o int strfind(string ເຟືອງ, string ເຂັມ)
ສົ່ງຄືນດັດຊະນີໃນ ຫິມະ ບ່ອນທີ່ ເຂັມ ຖືກພົບເຫັນ, ຫຼື -1 ຖ້າ ເຂັມ ບໍ່ໄດ້ບັນຈຸ
in ຫິມະ.
ນີ້ ຫນ້າທີ່ ແມ່ນ ເອີ້ນວ່າ strstr() in ສະບັບ ກ່ອນທີ່ຈະ 7.00.
o int ຮູບແບບສະຕຣິງ(string ຮູບແບບ, ... )
ຕອບສະຕຣິງທີ່ມີຮູບແບບໂດຍໃຊ້ຕົວຍຶດ %1 .. %2 ເພື່ອແກ້ໄຂອາກິວເມັນ
ຮູບແບບດັ່ງຕໍ່ໄປນີ້.
ຕົວຢ່າງ:
void ຫລັກ ()
{
int i = 10;
int j = 20;
string s1;
string s2;
// ວິທີການແບບດັ້ງເດີມ:
s1 = (string)i + "" + (string)j + "" + (string)i;
// ການນໍາໃຊ້ strformat:
s2 = strformat("%1 %2 %1",i,j);
printf("s1 = %1, s2 = %2\n", s1, s2);
}
o string strlwr(ສະຕຣິງ s)
ໃຫ້ຜົນເປັນຕົວພິມນ້ອຍຊໍ້າກັນຂອງ s.
o ບັນຊີລາຍຊື່ strtok(ສະຕຣິງ str, string ຕົວແຍກ)
ສົ່ງຄືນລາຍຊື່ທີ່ມີສາຍຍ່ອຍທັງໝົດຂອງ str ແຍກໂດຍຫນຶ່ງຫຼືຫຼາຍກວ່ານັ້ນ
(ຕິດຕໍ່ກັນ) ຕົວອັກສອນໃນ ຕົວຂັ້ນ. ຕົວຢ່າງ: strtok("ສະບາຍດີ icmake's + ໂລກ", " +")
ສົ່ງຄືນລາຍຊື່ທີ່ມີສາມສະຕຣິງ "ສະບາຍດີ", "icmake ຂອງ", ແລະ "ໂລກ".
o string strupr(string s)
ຕອບຕົວພິມໃຫຍ່ຊໍ້າກັນຂອງ s.
o string substr(string ຂໍ້ຄວາມ, int ຊົດເຊີຍ, int ນັບ)
ຕອບສະຕຣິງຍ່ອຍຂອງ ຂໍ້ຄວາມ, ເລີ່ມຕົ້ນຢູ່ ຊົດເຊີຍ, ປະກອບດ້ວຍ ນັບ ຕົວລະຄອນ. ຖ້າ
ຊົດເຊີຍ ເກີນ (ຫຼືເທົ່າກັບ) ຂະໜາດຂອງສະຕຣິງ ຫຼືຖ້າ ນັບ <= 0, ຫຼັງຈາກນັ້ນເປັນ string ເປົ່າ
ຖືກສົ່ງຄືນ. ຖ້າ ຊົດເຊີຍ ແມ່ນຫນ້ອຍກວ່າ 0 ຫຼັງຈາກນັ້ນ 0 ຖືກນໍາໃຊ້.
o int ລະບົບ(string ຄໍາສັ່ງ)
ການປະຕິບັດ ຄໍາສັ່ງ. ຄ່າກັບຄືນສະແດງເຖິງຄ່າອອກຂອງຄໍາສັ່ງທີ່ຖືກປະຕິບັດ. ໄດ້
string ຄໍາສັ່ງ ອາດຈະມີການປ່ຽນເສັ້ນທາງ ແລະ/ຫຼື ລັກສະນະທໍ່.
o int ລະບົບ(int ການກວດສອບ, string ຄໍາສັ່ງ)
ຫນ້າທີ່ດຽວກັນກັບຫນ້າທີ່ທີ່ຜ່ານມາ, ແຕ່ໂດຍການລະບຸ ການກວດສອບ as
ບໍ່ໄດ້ກວດເບິ່ງ ຟັງຊັນຈະບໍ່ຢຸດສະຄຣິບ. ແທນທີ່ຈະ, ມັນຈະກັບຄືນມາ
ເອີ້ນວ່າສະຖານະການອອກຄໍາສັ່ງ, ຫຼື 0x7f00 ຖ້າບໍ່ພົບຄໍາສັ່ງ.
o string trim(string s)
ສົ່ງຄືນສຳເນົາຂອງ s ໂດຍບໍ່ມີການນໍາພາແລະຕິດຕາມສະຖານທີ່ສີຂາວ.
o string trimleft(string str)
ສົ່ງຄືນສຳເນົາຂອງ s ໂດຍບໍ່ມີພື້ນທີ່ສີຂາວນໍາ.
o string trim(string s)
ສົ່ງຄືນສຳເນົາຂອງ s ໂດຍບໍ່ມີການຕິດຕາມຊ່ອງຫວ່າງສີຂາວ.
ຜູ້ໃຊ້ ກໍານົດ FUNCTIONS
void ຕົ້ນຕໍ
Icmake scripts ຕ້ອງໄດ້ຮັບການສະຫນອງດ້ວຍຟັງຊັນທີ່ຜູ້ໃຊ້ກໍານົດ ຕົ້ນຕໍ. ໜ້າ ທີ່ ຕົ້ນຕໍ ມີ
ສາມຕົວກໍານົດທາງເລືອກ, ເຊິ່ງອາດຈະຖືກຍົກເວັ້ນຈາກອັນສຸດທ້າຍ (envp) ກັບຄັ້ງທໍາອິດ
(ໂຕ້ຖຽງ), ເຊັ່ນດຽວກັນກັບ C. ຕົ້ນແບບເຕັມຮູບແບບຂອງມັນແມ່ນ (ໝາຍເຫດ: void ປະເພດກັບຄືນ):
void main(int argc, list argv, list envp)
In ຕົ້ນຕໍ (),
o ໂຕ້ຖຽງ ເປັນຕົວແທນຈໍານວນຂອງອົງປະກອບໃນ argv;
o argv ປະກອບດ້ວຍອາກິວເມັນ, ດ້ວຍອົງປະກອບ 0 ເທົ່າກັບຊື່ຂອງ .bim
ແຟ້ມ;
o envp ມີຕົວແປ 'ສະພາບແວດລ້ອມ'. ຫນ້າທີ່ ຟັງ ສາມາດຖືກນໍາໃຊ້ເພື່ອ
ກໍານົດຈໍານວນຂອງອົງປະກອບຂອງມັນ. ອົງປະກອບໃນ envp ມີແບບຟອມ
variable=ຄ່າ. ອີກທາງເລືອກ, ຫນ້າທີ່ getenv ສາມາດໃຊ້ເພື່ອດຶງຂໍ້ມູນ a
ສະພາບແວດລ້ອມສະເພາະຕົວປ່ຽນແປງທັນທີ. ຕົວຢ່າງ:
void main(int argc, list argv)
{
ບັນຊີລາຍຊື່ທີ່ຈະລວບລວມ;
int idx;
ຖ້າ (argc == 1)
ການນໍາໃຊ້(ອົງປະກອບ(0, argv));
ຖ້າ (toCompile = ປ່ຽນແປງ("*.cc"))
{
ສໍາລັບ (idx = length(toCompile); idx--; )
compile(ອົງປະກອບ(idx, toCompile));
ຖ້າ (getenv("dryrun")[0] == "0")
linking(ອົງປະກອບ(2, argv));
}
}
ມີການເລີ່ມຕົ້ນຕົວແປທົ່ວໂລກທັງໝົດຕາມລໍາດັບຂອງຄໍານິຍາມຂອງມັນ ຕົ້ນຕໍ ຖືກເອີ້ນໂດຍ
icmakeລະບົບສະຫນັບສະຫນູນເວລາແລ່ນຂອງເພື່ອປະຕິບັດວຽກງານເພີ່ມເຕີມ.
ນອກຈາກນັ້ນ, ກໍານົດໄວ້ ຜູ້ໃຊ້ ຫນ້າທີ່
ຟັງຊັນເພີ່ມເຕີມອາດຈະຖືກກໍານົດ. ເມື່ອກໍານົດ, ຫນ້າທີ່ເຫຼົ່ານີ້ສາມາດຖືກເອີ້ນວ່າ. ສົ່ງຕໍ່
ບໍ່ຮອງຮັບການອ້າງອີງຕົວແປ ຫຼືຟັງຊັນຕ່າງໆ, ແຕ່ການໂທຊ້ຳໆ
ຫນ້າທີ່ແມ່ນ. ໃນຖານະເປັນການປະກາດຫນ້າທີ່ບໍ່ໄດ້ຮັບການສະຫນັບສະຫນູນ recursion ທາງອ້ອມແມ່ນບໍ່
ສະຫນັບສະຫນູນທັງຫມົດ.
ຟັງຊັນທີ່ຜູ້ໃຊ້ກໍານົດຕ້ອງມີອົງປະກອບດັ່ງຕໍ່ໄປນີ້:
o ປະເພດຜົນຕອບແທນຂອງຟັງຊັນ, ເຊິ່ງຈະຕ້ອງເປັນຫນຶ່ງໃນ ຫວ່າງເປົ່າ, int, string or ບັນຊີລາຍຊື່ທີ່ຢູ່ ມີ
ບໍ່ແມ່ນປະເພດເລີ່ມຕົ້ນ.
o ຊື່ຂອງຟັງຊັນ, ຕົວຢ່າງ, ລວບລວມ.
o ບັນຊີລາຍຊື່ພາລາມິເຕີ, ກໍານົດສູນ ຫຼືຫຼາຍຕົວກໍານົດການທີ່ຂັ້ນດ້ວຍເຄື່ອງໝາຍຈຸດ. ຕົວກໍານົດການ
ຕົວຂອງມັນເອງປະກອບດ້ວຍຊື່ປະເພດ (int, string, ຫຼື ບັນຊີລາຍຊື່) ປະຕິບັດຕາມໂດຍ
ຕົວລະບຸຕົວກໍານົດການ. ຕົວຢ່າງ: (ສາຍ outfile, string ແຫຼ່ງຂໍ້ມູນ).
o A ຮ່າງກາຍ ອ້ອມຮອບດ້ວຍວົງເລັບ curly ຄູ່ ({ ແລະ }).
ອົງການຟັງຊັນອາດມີຄໍານິຍາມຕົວແປ (ທາງເລືອກເບື້ອງຕົ້ນ). ຕົວແປ
ຄໍານິຍາມເລີ່ມຕົ້ນດ້ວຍຊື່ປະເພດ, ຕາມດ້ວຍເຄື່ອງໝາຍຈຸດໜຶ່ງ ຫຼືຫຼາຍອັນທີ່ແຍກກັນ (ເລືອກໄດ້
initialized) ຕົວລະບຸຕົວແປ. ຖ້າຕົວແປບໍ່ໄດ້ຖືກເລີ່ມຕົ້ນຢ່າງຊັດເຈນ, ມັນແມ່ນ
ເລີ່ມຕົ້ນໂດຍຄ່າເລີ່ມຕົ້ນ. ໂດຍຄ່າເລີ່ມຕົ້ນເປັນ int ຕົວແປແມ່ນເລີ່ມຕົ້ນເປັນ 0, a string is
ເລີ່ມຕົ້ນເປັນສະຕຣິງຫວ່າງເປົ່າ ("") ແລະກ ບັນຊີລາຍຊື່ ໄດ້ຖືກເລີ່ມຕົ້ນເຂົ້າໃນບັນຊີລາຍຊື່ຂອງອົງປະກອບສູນ.
ນອກເໜືອໄປຈາກຄຳນິຍາມທີ່ປ່ຽນແປງໄດ້, ອົງການຈັດຕັ້ງອາດມີຄຳຊີ້ແຈງສູນ ຫຼື ຫຼາຍກວ່ານັ້ນ (cf.
ສ່ວນ ອັດຕາການໄຫລ ການຄວບຄຸມ). ໃຫ້ສັງເກດວ່າຕົວແປອາດຈະຖືກກໍານົດ (ແລະທາງເລືອກໃນການເລີ່ມຕົ້ນ)
ທຸກບ່ອນພາຍໃນຟັງຊັນ, ແລະຍັງຢູ່ໃນ ຖ້າ, ສໍາລັບການ ແລະ ໃນຂະນະທີ່ ຖະແຫຼງການ.
ພຶດຕິ ກຳ ຂອງ icmake-scripts ໃຊ້ຟັງຊັນທີ່ບໍ່ແມ່ນ void ທີ່ບໍ່ສົ່ງຄືນຄ່າບໍ່ແມ່ນ
ກໍານົດ.
ໃຊ້ icmake ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net