ນີ້ແມ່ນຄໍາສັ່ງ c99posix ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
c99 — ລວບລວມບັນດາໂຄງການມາດຕະຖານ C
ສະຫຼຸບສັງລວມ
c99 [ທາງເລືອກໃນການ...] ຊື່ເສັ້ນທາງ [[ຊື່ເສັ້ນທາງ] [-I ລະບົບ]
[−ລ ລະບົບ] [−l ຫ້ອງສະຫມຸດ]]...
ລາຍລະອຽດ
ໄດ້ c99 ຜົນປະໂຫຍດແມ່ນການໂຕ້ຕອບກັບລະບົບການລວບລວມມາດຕະຖານ C; ມັນຈະຍອມຮັບ
ລະຫັດແຫຼ່ງທີ່ສອດຄ່ອງກັບມາດຕະຖານ ISO C. ລະບົບແນວຄວາມຄິດປະກອບດ້ວຍ a
compiler ແລະ link editor. ໄຟລ໌ປ້ອນຂໍ້ມູນອ້າງອີງໂດຍ ຊື່ເສັ້ນທາງ ໂຕປະຕິບັດການ ແລະ −l ທາງເລືອກ-
ການໂຕ້ຖຽງຈະຖືກລວບລວມແລະເຊື່ອມໂຍງກັບການຜະລິດໄຟລ໌ທີ່ສາມາດປະຕິບັດໄດ້. (ມັນບໍ່ໄດ້ຖືກລະບຸ
ການເຊື່ອມຕໍ່ເກີດຂຶ້ນທັງຫມົດພາຍໃນການດໍາເນີນງານຂອງ c99; ການປະຕິບັດບາງຢ່າງອາດຈະ
ຜະລິດວັດຖຸທີ່ບໍ່ໄດ້ຮັບການແກ້ໄຂຢ່າງສົມບູນຈົນກ່ວາໄຟລ໌ຈະຖືກປະຕິບັດ.)
ຖ້າ −ຄ ທາງເລືອກແມ່ນໄດ້ລະບຸໄວ້, ສໍາລັບການດໍາເນີນການຊື່ເສັ້ນທາງທັງຫມົດຂອງຮູບແບບ ເອກະສານ.c, ໄຟລ໌:
$(ຊື່ພື້ນຖານ ຊື່ເສັ້ນທາງ .c).o
ຈະຖືກສ້າງຂື້ນເປັນຜົນມາຈາກການລວບລວມສົບຜົນສໍາເລັດ. ຖ້າ −ຄ ທາງເລືອກບໍ່ແມ່ນ
ລະບຸໄວ້, ມັນບໍ່ໄດ້ຖືກລະບຸວ່າດັ່ງກ່າວ .o ໄຟລ໌ໄດ້ຖືກສ້າງຕັ້ງຂື້ນຫຼືລົບສໍາລັບການ ເອກະສານ.c
ໂຕປະຕິບັດການ.
ຖ້າບໍ່ມີທາງເລືອກທີ່ປ້ອງກັນການແກ້ໄຂການເຊື່ອມຕໍ່ (ເຊັ່ນ: −ຄ or − ອ), ແລະໄຟລ໌ປ້ອນຂໍ້ມູນທັງໝົດ
ລວບລວມແລະເຊື່ອມຕໍ່ໂດຍບໍ່ມີຂໍ້ຜິດພາດ, ໄຟລ໌ທີ່ສາມາດປະຕິບັດໄດ້ຜົນຈະຖືກຂຽນຕາມ
ການ −o outfile ທາງເລືອກ (ຖ້າມີ) ຫຼືໄຟລ໌ ກ.
ໄຟລ໌ທີ່ສາມາດປະຕິບັດໄດ້ຈະຕ້ອງຖືກສ້າງຂື້ນຕາມທີ່ລະບຸໄວ້ໃນ ສ່ວນ 1.1.1.4, ເອກະສານ ອ່ານ, ຂຽນ,
ແລະ ການສ້າງ, ຍົກເວັ້ນວ່າ bits ການອະນຸຍາດໄຟລ໌ຈະຖືກຕັ້ງເປັນ: S_IRWXO | S_IRWXG |
S_IRWXU
ແລະບິດທີ່ລະບຸໄວ້ໂດຍ ໜ້າ ກາກ ຂອງຂະບວນການຕ້ອງໄດ້ຮັບການອະນາໄມ.
OPTIONS
ໄດ້ c99 ຜົນປະໂຫຍດຈະຕ້ອງສອດຄ່ອງກັບປະລິມານຄໍານິຍາມພື້ນຖານຂອງ POSIX.1-2008, ສ່ວນ
12.2, ຜົນປະໂຫຍດ syntax ຄູ່ມືແນະນໍາ, ຍົກເວັ້ນວ່າ:
* ທາງເລືອກສາມາດ interspersed ກັບ operands.
* ຄໍາສັ່ງຂອງການລະບຸ −ລ ແລະ −l ທາງເລືອກ, ແລະຄໍາສັ່ງຂອງການລະບຸ −l ທາງເລືອກໃນການ
ດ້ວຍຄວາມເຄົາລົບ ຊື່ເສັ້ນທາງ operands ມີຄວາມສໍາຄັນ.
* ຄໍາຮ້ອງສະຫມັກທີ່ສອດຄ່ອງຈະຕ້ອງລະບຸແຕ່ລະທາງເລືອກແຍກຕ່າງຫາກ; ນັ້ນແມ່ນ, ທາງເລືອກການຈັດກຸ່ມ
ຕົວອັກສອນ (ຕົວຢ່າງ, −cO) ບໍ່ຈໍາເປັນຕ້ອງໄດ້ຮັບການຍອມຮັບໂດຍການປະຕິບັດທັງຫມົດ.
ທາງເລືອກຕໍ່ໄປນີ້ຈະໄດ້ຮັບການສະຫນັບສະຫນູນ:
−ຄ ສະກັດກັ້ນໄລຍະການເຊື່ອມໂຍງ - ດັດແກ້ຂອງການລວບລວມ, ແລະບໍ່ເອົາວັດຖຸໃດໆ
ໄຟລ໌ທີ່ຜະລິດ.
−D ຊື່[=ມູນຄ່າ]
ກໍານົດ ຊື່ ຄືກັບພາສາ C #ກໍານົດ ຄໍາສັ່ງ. ຖ້າບໍ່ມີ =ມູນຄ່າ ແມ່ນໃຫ້, a
ຄ່າຂອງ 1 ຈະຖືກນໍາໃຊ້. ໄດ້ −D ທາງເລືອກມີຄວາມສໍາຄັນຕ່ໍາກ່ວາ -U ທາງເລືອກ.
ນັ້ນແມ່ນ, ຖ້າ ຊື່ ຖືກນໍາໃຊ້ໃນທັງສອງ a -U ແລະ −D ທາງເລືອກ, ຊື່ ຈະບໍ່ໄດ້ກໍານົດ
ໂດຍບໍ່ຄໍານຶງເຖິງຄໍາສັ່ງຂອງທາງເລືອກ. ການຈັດຕັ້ງປະຕິບັດເພີ່ມເຕີມ - ກໍານົດ ຊື່s
ອາດຈະສະຫນອງໃຫ້ໂດຍ compiler. ການຈັດຕັ້ງປະຕິບັດຈະສະຫນັບສະຫນູນຢ່າງຫນ້ອຍ 2048
bytes ຂອງ −D ນິຍາມ ແລະ 256 ຊື່.
− ອ ສຳເນົາໄຟລ໌ແຫຼ່ງພາສາ C ໄປຫາຜົນຜະລິດມາດຕະຖານ, ຂະຫຍາຍຕົວປະມວນຜົນກ່ອນທັງໝົດ
ຄຳແນະນຳ; ບໍ່ມີການລວບລວມຂໍ້ມູນຈະຖືກປະຕິບັດ. ຖ້າຕົວປະຕິບັດການໃດໆບໍ່ແມ່ນຂໍ້ຄວາມ
ໄຟລ໌, ຜົນກະທົບແມ່ນບໍ່ໄດ້ລະບຸ.
−ກ ຜະລິດຂໍ້ມູນສັນຍາລັກໃນວັດຖຸຫຼືໄຟລ໌ທີ່ປະຕິບັດໄດ້; ລັກສະນະຂອງ
ຂໍ້ມູນນີ້ແມ່ນບໍ່ໄດ້ລະບຸໄວ້, ແລະອາດຈະໄດ້ຮັບການແກ້ໄຂໂດຍການປະຕິບັດກໍານົດ
ປະຕິສໍາພັນກັບທາງເລືອກອື່ນ.
-I ລະບົບ
ປ່ຽນແປງສູດການຄິດໄລ່ສໍາລັບການຄົ້ນຫາ headers ທີ່ມີຊື່ບໍ່ແມ່ນຢ່າງແທ້ຈິງ
pathnames ເພື່ອເບິ່ງຢູ່ໃນໄດເລກະທໍລີທີ່ມີຊື່ໂດຍ ລະບົບ ຊື່ເສັ້ນທາງກ່ອນ
ຊອກຫາຢູ່ໃນສະຖານທີ່ປົກກະຕິ. ດັ່ງນັ້ນ, ຫົວທີ່ມີຊື່ຖືກຫຸ້ມດ້ວຍສອງເທົ່າ.
ວົງຢືມ ("") ຈະຖືກຄົ້ນຫາສໍາລັບການທໍາອິດໃນລະບົບຂອງໄຟລ໌ທີ່ມີ
#include ແຖວ, ຫຼັງຈາກນັ້ນຢູ່ໃນໄດເລກະທໍລີທີ່ມີຊື່ໃນ -I ທາງເລືອກ, ແລະສຸດທ້າຍໃນປົກກະຕິ
ສະຖານທີ່. ສໍາລັບສ່ວນຫົວທີ່ມີຊື່ຖືກຕິດຢູ່ໃນວົງເລັບມຸມ ("<>"), the
header ຈະຖືກຄົ້ນຫາພຽງແຕ່ຢູ່ໃນໄດເລກະທໍລີທີ່ມີຊື່ໃນ -I ທາງເລືອກແລະຫຼັງຈາກນັ້ນໃນ
ສະຖານທີ່ປົກກະຕິ. ໄດເລກະທໍລີທີ່ມີຊື່ໃນ -I ທາງເລືອກຈະໄດ້ຮັບການຄົ້ນຫາໃນຄໍາສັ່ງ
ລະບຸ. ຖ້າ -I ທາງເລືອກແມ່ນໃຊ້ເພື່ອລະບຸໄດເລກະທໍລີທີ່ເປັນຫນຶ່ງໃນ
ສະຖານທີ່ປົກກະຕິຄົ້ນຫາໂດຍເລີ່ມຕົ້ນ, ຜົນໄດ້ຮັບແມ່ນບໍ່ໄດ້ລະບຸໄວ້. ການຈັດຕັ້ງປະຕິບັດ
ຈະຮອງຮັບຢ່າງໜ້ອຍສິບຕົວຢ່າງຂອງຕົວເລືອກນີ້ໃນອັນດຽວ c99 ຄໍາສັ່ງ
ຄຳຮຽກຮ້ອງ.
−ລ ລະບົບ
ປ່ຽນແປງລະບົບການຊອກຫາຫ້ອງສະໝຸດທີ່ມີຊື່ຢູ່ໃນ −l ວັດຖຸເພື່ອ
ເບິ່ງຢູ່ໃນໄດເລກະທໍລີທີ່ມີຊື່ໂດຍ ລະບົບ ຊື່ເສັ້ນທາງກ່ອນທີ່ຈະຊອກຫາຢູ່ໃນ
ສະຖານທີ່ປົກກະຕິ. ໄດເລກະທໍລີທີ່ມີຊື່ໃນ −ລ ທາງເລືອກຈະໄດ້ຮັບການຄົ້ນຫາໃນຄໍາສັ່ງ
ລະບຸ. ຖ້າ −ລ ທາງເລືອກແມ່ນໃຊ້ເພື່ອລະບຸໄດເລກະທໍລີທີ່ເປັນຫນຶ່ງໃນ
ສະຖານທີ່ປົກກະຕິຄົ້ນຫາໂດຍເລີ່ມຕົ້ນ, ຜົນໄດ້ຮັບແມ່ນບໍ່ໄດ້ລະບຸໄວ້. ການຈັດຕັ້ງປະຕິບັດ
ຈະຮອງຮັບຢ່າງໜ້ອຍສິບຕົວຢ່າງຂອງຕົວເລືອກນີ້ໃນອັນດຽວ c99 ຄໍາສັ່ງ
ຄຳຮຽກຮ້ອງ. ຖ້າໄດເລກະທໍລີທີ່ກໍານົດໂດຍ a −ລ ທາງເລືອກປະກອບມີໄຟລ໌ທີ່ມີຊື່
ເລີ່ມຕົ້ນດ້ວຍສາຍໃດນຶ່ງ "libc.", "libl.", "ຫົວຂໍ້ libpthread.", "libm.",
"librt.", "libtrace.", "libxnet.", ຫຼື "ລີບີ.", ຜົນໄດ້ຮັບແມ່ນບໍ່ໄດ້ລະບຸ.
−l ຫ້ອງສະຫມຸດ
ຄົ້ນຫາຫ້ອງສະຫມຸດທີ່ມີຊື່ ຫ້ອງສະໝຸດ.a. ຫ້ອງສະຫມຸດຈະຖືກຄົ້ນຫາໃນເວລາທີ່ມັນ
ຊື່ແມ່ນພົບ, ສະນັ້ນການຈັດວາງຂອງ a −l ທາງເລືອກແມ່ນສໍາຄັນ. ຫຼາຍ
ຫ້ອງສະຫມຸດມາດຕະຖານສາມາດຖືກລະບຸໄວ້ໃນລັກສະນະນີ້, ດັ່ງທີ່ອະທິບາຍໄວ້ໃນ EXTENDED
ພາກສ່ວນລາຍລະອຽດ. ການຈັດຕັ້ງປະຕິບັດອາດຈະຮັບຮູ້ການຈັດຕັ້ງປະຕິບັດທີ່ໄດ້ກໍານົດ
ຄໍາຕໍ່ທ້າຍນອກຈາກ .a ຫມາຍເຖິງຫ້ອງສະຫມຸດ.
−ອ ທາງເລືອກ
ລະບຸລະດັບການເພີ່ມປະສິດທິພາບລະຫັດ. ຖ້າ ທາງເລືອກ option-argument ແມ່ນ
ຫລັກ '0', ການເພີ່ມປະສິດທິພາບລະຫັດພິເສດທັງຫມົດຈະຖືກປິດໃຊ້ງານ. ຖ້າມັນເປັນຕົວເລກ
'1', ລັກສະນະຂອງການເພີ່ມປະສິດທິພາບແມ່ນບໍ່ໄດ້ລະບຸ. ຖ້າ −ອ ທາງເລືອກແມ່ນຍົກເວັ້ນ,
ລັກສະນະຂອງການເພີ່ມປະສິດທິພາບເລີ່ມຕົ້ນຂອງລະບົບແມ່ນບໍ່ໄດ້ລະບຸ. ມັນແມ່ນ
ບໍ່ໄດ້ລະບຸວ່າລະຫັດທີ່ສ້າງຂຶ້ນໃນທີ່ປະທັບຂອງ −ອ 0 ທາງເລືອກແມ່ນ
ຄືກັນກັບທີ່ສ້າງຂຶ້ນເມື່ອ −ອ ຖືກລະເວັ້ນ. ອື່ນໆ ທາງເລືອກ ຄຸນຄ່າອາດຈະເປັນ
ສະຫນັບສະຫນູນ.
−o outfile
ໃຊ້ຊື່ເສັ້ນທາງ outfile, ແທນທີ່ຈະເປັນຄ່າເລີ່ມຕົ້ນ ກ, ສໍາລັບໄຟລ໌ປະຕິບັດໄດ້
ຜະລິດ. ຖ້າ −o ທາງເລືອກແມ່ນມີຢູ່ −ຄ or − ອ, ຜົນໄດ້ຮັບແມ່ນບໍ່ໄດ້ລະບຸ.
−ສ ຜະລິດວັດຖຸຫຼືໄຟລ໌ທີ່ປະຕິບັດໄດ້, ຫຼືທັງສອງ, ຈາກທີ່ສັນຍາລັກແລະອື່ນໆ
ຂໍ້ມູນທີ່ບໍ່ຈໍາເປັນຕ້ອງສໍາລັບການປະຕິບັດທີ່ເຫມາະສົມໂດຍນໍາໃຊ້ exec ຄອບຄົວທີ່ກໍານົດໄວ້ໃນ
ປະລິມານສ່ວນຕິດຕໍ່ລະບົບຂອງ POSIX.1-2008 ໄດ້ຖືກເອົາອອກ (ຖອດອອກ). ຖ້າ
ທັງສອງ −ກ ແລະ −ສ ທາງເລືອກແມ່ນປະຈຸບັນ, ການປະຕິບັດແມ່ນບໍ່ໄດ້ກໍານົດ.
-U ຊື່ ເອົາຄໍານິຍາມເບື້ອງຕົ້ນຂອງ ຊື່.
ຫຼາຍຕົວຢ່າງຂອງ −D, -I, −ລ, −l, ແລະ -U ທາງເລືອກສາມາດຖືກກໍານົດ.
ດໍາເນີນງານ
ຄໍາຮ້ອງສະຫມັກຈະຕ້ອງຮັບປະກັນວ່າຢ່າງຫນ້ອຍຫນຶ່ງ ຊື່ເສັ້ນທາງ operand ແມ່ນລະບຸໄວ້. ໄດ້
ແບບຟອມດັ່ງຕໍ່ໄປນີ້ສໍາລັບ ຊື່ເສັ້ນທາງ operands ຈະໄດ້ຮັບການສະຫນັບສະຫນູນ:
ຍື່ນ.c ໄຟລ໌ແຫຼ່ງພາສາ C ທີ່ຈະລວບລວມແລະເຊື່ອມຕໍ່ທາງເລືອກ. ຄໍາຮ້ອງສະຫມັກ
ຈະຕ້ອງຮັບປະກັນວ່າ operand ເປັນຂອງຮູບແບບນີ້ຖ້າຫາກວ່າ −ຄ ທາງເລືອກແມ່ນຖືກນໍາໃຊ້.
ຍື່ນ.a ຫ້ອງສະໝຸດຂອງໄຟລ໌ວັດຖຸທີ່ປົກກະຕິຜະລິດໂດຍ ar ຜົນປະໂຫຍດ, ແລະຜ່ານ
ໂດຍກົງກັບຕົວແກ້ໄຂການເຊື່ອມຕໍ່. ການປະຕິບັດອາດຈະຮັບຮູ້ການປະຕິບັດ -
ຄຳຕໍ່ທ້າຍທີ່ກຳນົດໄວ້ນອກເໜືອໄປຈາກ .a ເປັນ denoting ຫໍສະຫມຸດໄຟລ໌ວັດຖຸ.
ຍື່ນ.o ໄຟລ໌ວັດຖຸທີ່ຜະລິດໂດຍ c99 −ຄ ແລະສົ່ງຜ່ານຕົວແກ້ໄຂການເຊື່ອມຕໍ່ໂດຍກົງ.
ການຈັດຕັ້ງປະຕິບັດອາດຈະຮັບຮູ້ຄໍາຕໍ່ທ້າຍທີ່ກໍານົດການຈັດຕັ້ງປະຕິບັດນອກຈາກ .o as
ຫມາຍເຖິງໄຟລ໌ວັດຖຸ.
ການປະມວນຜົນຂອງໄຟລ໌ອື່ນໆແມ່ນກໍານົດການປະຕິບັດ.
STDIN
ບໍ່ໄດ້ນໍາໃຊ້.
ປັດໄຈນໍາເຂົ້າ ເອກະສານ
ແຕ່ລະໄຟລ໌ປ້ອນຂໍ້ມູນຈະຕ້ອງເປັນຫນຶ່ງໃນຕໍ່ໄປນີ້: ໄຟລ໌ຂໍ້ຄວາມທີ່ມີແຫຼ່ງພາສາ C
ໂຄງການ, ໄຟລ໌ວັດຖຸໃນຮູບແບບທີ່ຜະລິດໂດຍ c99 −ຄ, ຫຼືຫ້ອງສະຫມຸດຂອງໄຟລ໌ວັດຖຸ, ໃນ
ຮູບແບບທີ່ຜະລິດໂດຍການເກັບສູນຫຼືຫຼາຍໄຟລ໌ວັດຖຸ, ການນໍາໃຊ້ ar. ການຈັດຕັ້ງປະຕິບັດອາດຈະ
ສະຫນອງຜົນປະໂຫຍດເພີ່ມເຕີມທີ່ຜະລິດໄຟລ໌ໃນຮູບແບບເຫຼົ່ານີ້. ໄຟລ໌ປ້ອນຂໍ້ມູນເພີ່ມເຕີມ
ຮູບແບບແມ່ນຖືກກໍານົດໂດຍການປະຕິບັດ.
ENVIRONMENT ຄວາມຮັບຜິດຊອບ
ຕົວແປສະພາບແວດລ້ອມຕໍ່ໄປນີ້ຈະສົ່ງຜົນກະທົບຕໍ່ການປະຕິບັດ c99:
ພາສາ ໃຫ້ຄ່າເລີ່ມຕົ້ນສໍາລັບຕົວແປສາກົນທີ່ບໍ່ໄດ້ຕັ້ງ ຫຼື
null. (ເບິ່ງປະລິມານຄໍານິຍາມພື້ນຖານຂອງ POSIX.1-2008, ສ່ວນ 8.2,
Internationalization Variables ເພື່ອຄວາມກ້າວໜ້າຂອງການຫັນເປັນສາກົນ
ຕົວແປທີ່ໃຊ້ເພື່ອກໍານົດຄ່າຂອງປະເພດທ້ອງຖິ່ນ.)
LC_ALL ຖ້າຕັ້ງເປັນຄ່າສະຕຣິງທີ່ບໍ່ຫວ່າງເປົ່າ, ລົບລ້າງຄ່າຂອງອັນອື່ນທັງໝົດ
ຕົວແປສາກົນ.
LC_CTYPE ກໍານົດທ້ອງຖິ່ນສໍາລັບການຕີຄວາມລໍາດັບຂອງ bytes ຂອງຂໍ້ມູນຂໍ້ຄວາມ
ເປັນຕົວອັກສອນ (ຕົວຢ່າງ, single-byte ກົງກັນຂ້າມກັບ multi-byte ຕົວອັກສອນໃນ
arguments ແລະ input ໄຟລ໌).
LC_MESSAGES
ກໍານົດທ້ອງຖິ່ນທີ່ຄວນຈະຖືກນໍາໃຊ້ເພື່ອຜົນກະທົບຕໍ່ຮູບແບບແລະເນື້ອໃນຂອງ
ຂໍ້ຄວາມການວິນິໄສທີ່ຂຽນເປັນຄວາມຜິດພາດມາດຕະຖານ.
NLSPATH ກໍານົດສະຖານທີ່ຂອງລາຍການຂໍ້ຄວາມສໍາລັບການປະມວນຜົນຂອງ LC_MESSAGES.
TMPDIR ສະຫນອງຊື່ເສັ້ນທາງທີ່ຄວນຈະ override ໄດເລກະທໍລີເລີ່ມຕົ້ນສໍາລັບການຊົ່ວຄາວ
ໄຟລ໌, ຖ້າມີ. ໃນລະບົບທີ່ສອດຄ່ອງກັບ XSI, ໃຫ້ຊື່ເສັ້ນທາງທີ່ຈະ
override ໄດເລກະທໍລີເລີ່ມຕົ້ນສໍາລັບໄຟລ໌ຊົ່ວຄາວ, ຖ້າມີ.
ASYNCHRONOUS ເຫດການ
ເລີ່ມຕົ້ນ.
STDOUT
ຖ້າຫຼາຍກວ່າ ໜຶ່ງ ອັນ ຊື່ເສັ້ນທາງ operand ສິ້ນສຸດໃນ .c (ຫຼືອາດຈະເປັນຄໍາຕໍ່ທ້າຍທີ່ບໍ່ໄດ້ກໍານົດອື່ນໆ) ແມ່ນ
ໃຫ້, ສໍາລັບແຕ່ລະໄຟລ໌ດັ່ງກ່າວ:
"%s:\n", <ຊື່ເສັ້ນທາງ>
ອາດຈະຂຽນ. ຂໍ້ຄວາມເຫຼົ່ານີ້, ຖ້າເປັນລາຍລັກອັກສອນ, ຈະນໍາຫນ້າການປະມວນຜົນຂອງແຕ່ລະວັດສະດຸປ້ອນ
ໄຟລ໌; ພວກມັນຈະບໍ່ຖືກຂຽນໃສ່ຜົນໄດ້ຮັບມາດຕະຖານ ຖ້າພວກມັນຖືກຂຽນໃສ່ມາດຕະຖານ
ຄວາມຜິດພາດ, ດັ່ງທີ່ອະທິບາຍໄວ້ໃນພາກ STDERR.
ຖ້າ − ອ ທາງເລືອກແມ່ນໄດ້ລະບຸໄວ້, ຜົນຜະລິດມາດຕະຖານຈະເປັນໄຟລ໌ຂໍ້ຄວາມທີ່ເປັນຕົວແທນ
ຜົນໄດ້ຮັບຂອງຂັ້ນຕອນ preprocessing ຂອງພາສາ; ມັນອາດຈະມີຂໍ້ມູນເພີ່ມເຕີມ
ເຫມາະສົມສໍາລັບການລວບລວມຂໍ້ມູນຕໍ່ໄປ.
ສະດຸດ
ຄວາມຜິດພາດມາດຕະຖານຈະຖືກນໍາໃຊ້ສໍາລັບຂໍ້ຄວາມວິນິດໄສເທົ່ານັ້ນ. ຖ້າຫຼາຍກວ່າຫນຶ່ງ ຊື່ເສັ້ນທາງ
operand ສິ້ນສຸດໃນ .c (ຫຼືອາດຈະເປັນຄໍາຕໍ່ທ້າຍທີ່ບໍ່ໄດ້ລະບຸອື່ນໆ) ແມ່ນໃຫ້, ສໍາລັບແຕ່ລະຄົນ
file:
"%s:\n", <ຊື່ເສັ້ນທາງ>
ອາດຈະຖືກຂຽນເພື່ອອະນຸຍາດໃຫ້ກໍານົດການວິນິດໄສແລະຂໍ້ຄວາມເຕືອນດ້ວຍ
ໄຟລ໌ປ້ອນຂໍ້ມູນທີ່ເຫມາະສົມ. ຂໍ້ຄວາມເຫຼົ່ານີ້, ຖ້າຖືກຂຽນ, ຈະນໍາຫນ້າການປຸງແຕ່ງຂອງແຕ່ລະຄົນ
ໄຟລ໌ປ້ອນຂໍ້ມູນ; ພວກເຂົາເຈົ້າຈະບໍ່ໄດ້ຮັບການລາຍລັກອັກສອນກັບຄວາມຜິດພາດມາດຕະຖານຖ້າຫາກວ່າພວກເຂົາເຈົ້າໄດ້ຖືກລາຍລັກອັກສອນ
ຜົນຜະລິດມາດຕະຖານ, ດັ່ງທີ່ໄດ້ອະທິບາຍໄວ້ໃນພາກ STDOUT.
ຜົນປະໂຫຍດນີ້ອາດຈະສ້າງຂໍ້ຄວາມເຕືອນກ່ຽວກັບເງື່ອນໄຂບາງຢ່າງທີ່ບໍ່ຮັບປະກັນ
ສົ່ງຄືນຄ່າອອກຂໍ້ຜິດພາດ (ບໍ່ແມ່ນສູນ).
OUTPUT ເອກະສານ
ໄຟລ໌ວັດຖຸ ຫຼືໄຟລ໌ທີ່ປະຕິບັດໄດ້ ຫຼືທັງສອງແມ່ນຜະລິດໃນຮູບແບບທີ່ບໍ່ໄດ້ລະບຸ. ຖ້າ
ຊື່ເສັ້ນທາງຂອງໄຟລ໌ວັດຖຸ ຫຼືໄຟລ໌ທີ່ສາມາດປະຕິບັດໄດ້ທີ່ຈະສ້າງຂຶ້ນໂດຍ c99 ແກ້ໄຂບັນຫາທີ່ມີຢູ່ແລ້ວ
ບັນຊີລາຍການສໍາລັບໄຟລ໌ທີ່ບໍ່ແມ່ນໄຟລ໌ປົກກະຕິ, ມັນບໍ່ໄດ້ຖືກລະບຸວ່າ c99 ຈະ
ພະຍາຍາມສ້າງໄຟລ໌ຫຼືຈະອອກການວິນິດໄສແລະອອກດ້ວຍການອອກທີ່ບໍ່ແມ່ນສູນ
ສະຖານະພາບ.
ອະທິບາຍ ລາຍລະອຽດ
ມາດຕະຖານ ຫ້ອງສະຫມຸດ
ໄດ້ c99 ຜົນປະໂຫຍດຈະຕ້ອງຮັບຮູ້ສິ່ງຕໍ່ໄປນີ້ −l ທາງເລືອກສໍາລັບຫ້ອງສະຫມຸດມາດຕະຖານ:
−l c ຕົວເລືອກນີ້ຈະເຮັດໃຫ້ມີການໂຕ້ຕອບທັງໝົດທີ່ອ້າງອີງຢູ່ໃນລະບົບ
ປະລິມານການໂຕ້ຕອບຂອງ POSIX.1-2008, ໂດຍມີຂໍ້ຍົກເວັ້ນທີ່ເປັນໄປໄດ້
ອິນເຕີເຟດທີ່ລະບຸວ່າອາໄສຢູ່ໃນ , , , ,
, , , , , ,
, , , , pthread_kill(), ແລະ
pthread_sigmask() ໃນ , , ການໂຕ້ຕອບທີ່ຖືກຫມາຍເປັນທາງເລືອກໃນ
, ການໂຕ້ຕອບທີ່ຖືກຫມາຍເປັນ ADV (ຂໍ້ມູນຂ່າວສານທີ່ປຶກສາ) ໃນ , ແລະ
ການໂຕ້ຕອບທີ່ເລີ່ມຕົ້ນດ້ວຍຄໍານໍາຫນ້າ clock_ ຫຼື time_ ໃນ . ຕົວເລືອກນີ້
ບໍ່ຈໍາເປັນຕ້ອງມີຢູ່ເພື່ອເຮັດໃຫ້ເກີດການຄົ້ນຫາຫ້ອງສະຫມຸດນີ້.
−l l ຕົວເລືອກນີ້ຈະເຮັດໃຫ້ມີການໂຕ້ຕອບທັງໝົດທີ່ຕ້ອງການໂດຍພາສາ C
ຜົນຜະລິດຂອງ lex ທີ່ຍັງບໍ່ໄດ້ເຮັດໃຫ້ສາມາດໃຊ້ໄດ້ໂດຍຜ່ານ −l c ທາງເລືອກ.
−l pthread
ທາງເລືອກນີ້ຈະເຮັດໃຫ້ມີການໂຕ້ຕອບທັງຫມົດທີ່ອ້າງອີງຢູ່ໃນ ແລະ
pthread_kill() ແລະ pthread_sigmask() ອ້າງອີງໃນ . ເປັນ
ການປະຕິບັດອາດຈະຊອກຫາຫ້ອງສະຫມຸດນີ້ໃນເວລາທີ່ບໍ່ມີທາງເລືອກນີ້.
−l m ທາງເລືອກນີ້ຈະເຮັດໃຫ້ມີການໂຕ້ຕອບທັງຫມົດທີ່ອ້າງອີງຢູ່ໃນ ,
, ແລະ . ການປະຕິບັດອາດຈະຊອກຫາຫ້ອງສະຫມຸດນີ້ຢູ່ໃນ
ບໍ່ມີທາງເລືອກນີ້.
−l rt ທາງເລືອກນີ້ຈະເຮັດໃຫ້ມີການໂຕ້ຕອບທັງຫມົດທີ່ອ້າງອີງຢູ່ໃນ ,
, , , ແລະ , ການໂຕ້ຕອບທີ່ຖືກຫມາຍເປັນ
ທາງເລືອກໃນ , ການໂຕ້ຕອບທີ່ຖືກຫມາຍເປັນ ADV (ຂໍ້ມູນຂ່າວສານທີ່ປຶກສາ) ໃນ
, ແລະສ່ວນຕິດຕໍ່ເລີ່ມຕົ້ນດ້ວຍຄຳນຳໜ້າ clock_ ແລະ time_ ໃນ
. ການປະຕິບັດອາດຈະຊອກຫາຫ້ອງສະຫມຸດນີ້ໃນກໍລະນີທີ່ບໍ່ມີນີ້
ທາງເລືອກ.
−l trace ທາງເລືອກນີ້ຈະເຮັດໃຫ້ມີການໂຕ້ຕອບທັງຫມົດທີ່ອ້າງອີງຢູ່ໃນ . ເປັນ
ການປະຕິບັດອາດຈະຊອກຫາຫ້ອງສະຫມຸດນີ້ໃນເວລາທີ່ບໍ່ມີທາງເລືອກນີ້.
−l xnet ທາງເລືອກນີ້ຈະເຮັດໃຫ້ມີການໂຕ້ຕອບທັງຫມົດທີ່ອ້າງອີງຢູ່ໃນ ,
, , , ແລະ . ການປະຕິບັດ
ອາດຈະຊອກຫາຫ້ອງສະຫມຸດນີ້ໃນເວລາທີ່ບໍ່ມີທາງເລືອກນີ້.
−l y ຕົວເລືອກນີ້ຈະເຮັດໃຫ້ມີການໂຕ້ຕອບທັງໝົດທີ່ຕ້ອງການໂດຍພາສາ C
ຜົນຜະລິດຂອງ yacc ທີ່ຍັງບໍ່ໄດ້ເຮັດໃຫ້ສາມາດໃຊ້ໄດ້ໂດຍຜ່ານ −l c ທາງເລືອກ.
ໃນກໍລະນີທີ່ບໍ່ມີທາງເລືອກທີ່ inhibit invocation ຂອງບັນນາທິການເຊື່ອມຕໍ່, ເຊັ່ນ: −ຄ or − ອ,
ໄດ້ c99 ຜົນປະໂຫຍດຈະເຮັດໃຫ້ເກີດການທຽບເທົ່າຂອງ a −l c ທາງເລືອກທີ່ຈະຖືກສົ່ງໄປຫາການເຊື່ອມຕໍ່
ບັນນາທິການຫຼັງຈາກທີ່ສຸດ ຊື່ເສັ້ນທາງ ປະຕິບັດການຫຼື −l ທາງເລືອກ, ເຮັດໃຫ້ມັນຖືກຄົ້ນຫາຫຼັງຈາກທັງຫມົດ
ໄຟລ໌ວັດຖຸອື່ນໆ ແລະຫ້ອງສະໝຸດຖືກໂຫລດ.
ມັນບໍ່ໄດ້ຖືກລະບຸວ່າຫ້ອງສະຫມຸດ libc.a, libl.a, libm.a, libpthread.a, librt.a,
libtrace.a, libxnet.a, ຫຼື liby.a ມີຢູ່ເປັນໄຟລ໌ປົກກະຕິ. ການປະຕິບັດອາດຈະຍອມຮັບເປັນ
−l option-arguments ຊື່ຂອງວັດຖຸທີ່ບໍ່ມີເປັນໄຟລ໌ປົກກະຕິ.
ພາຍນອກ ສັນຍາລັກ
C compiler ແລະ link editor ສະຫນັບສະຫນູນຄວາມສໍາຄັນຂອງສັນຍາລັກພາຍນອກເຖິງ a
ຄວາມຍາວຢ່າງຫນ້ອຍ 31 bytes; ການປະຕິບັດຕາມການປະເຊີນກັບສັນຍາລັກເກີນ
ຄວາມຍາວຂອງສັນຍາລັກສູງສຸດທີ່ກຳນົດໂດຍການປະຕິບັດແມ່ນບໍ່ໄດ້ລະບຸ.
compiler ແລະ link editor ສະຫນັບສະຫນູນຢ່າງຫນ້ອຍ 511 ສັນຍາລັກພາຍນອກຕໍ່ແຫຼ່ງຫຼື
ໄຟລ໌ວັດຖຸ, ແລະຢ່າງໜ້ອຍ 4095 ສັນຍາລັກພາຍນອກທັງໝົດ. ຂໍ້ຄວາມວິນິດໄສຈະຕ້ອງ
ຈະຖືກຂຽນໃສ່ຜົນໄດ້ຮັບມາດຕະຖານຖ້າເກີນຂອບເຂດຈໍາກັດການຈັດຕັ້ງປະຕິບັດ; ອື່ນໆ
ການກະທໍາແມ່ນບໍ່ໄດ້ລະບຸໄວ້.
Header ຄົ້ນຫາ
ຖ້າໄຟລ໌ທີ່ມີຊື່ດຽວກັນກັບຫນຶ່ງໃນຫົວມາດຕະຖານທີ່ກໍານົດໄວ້ໃນ Base
ປະລິມານຄໍານິຍາມຂອງ POSIX.1-2008, ບົດ 13, Headers, ບໍ່ໄດ້ສະຫນອງໃຫ້ເປັນສ່ວນຫນຶ່ງຂອງ
ການປະຕິບັດ, ຖືກຈັດໃສ່ໃນທຸກສະຖານທີ່ປົກກະຕິທີ່ຖືກຄົ້ນຫາໂດຍການເລີ່ມຕົ້ນສໍາລັບການ
headers, ຜົນໄດ້ຮັບແມ່ນບໍ່ໄດ້ກໍານົດ.
ດໍາເນີນໂຄງການ ສະພາບແວດລ້ອມ
ການປະຕິບັດທັງຫມົດຈະຕ້ອງສະຫນັບສະຫນູນຫນຶ່ງໃນສະພາບແວດລ້ອມໂຄງການຕໍ່ໄປນີ້ເປັນ
ຄ່າເລີ່ມຕົ້ນ. ການປະຕິບັດອາດຈະສະຫນັບສະຫນູນຫຼາຍກ່ວາຫນຶ່ງໃນໂຄງການຕໍ່ໄປນີ້
ສະພາບແວດລ້ອມ. ຄໍາຮ້ອງສະຫມັກສາມາດນໍາໃຊ້ sysconf() ຫລື getconf ເພື່ອກໍານົດວ່າການຂຽນໂປຼແກຼມໃດ
ສະພາບແວດລ້ອມໄດ້ຮັບການສະຫນັບສະຫນູນ.
ຕາຕະລາງ 4-4: ດໍາເນີນໂຄງການ ສະພາບແວດລ້ອມ: ປະເພດ ຂະຫນາດ
┌────────────────────────── ┬────────────────────── ─────┬──────────┐
│ດໍາເນີນໂຄງການ ສະພາບແວດລ້ອມ │ ບິດ in │ ບິດ in │ ບິດ in │ ບິດ in │
│ getconf ຊື່ │ int │ ຍາວ │ ຕົວຊີ້ │ off_t │
├────────────────────────── ┼─────────────────── ─────┼──────────┤
│_POSIX_V7_ILP32_OFF32 │ 32 │ 32 │ 32 │ 32 │
│_POSIX_V7_ILP32_OFFBIG │ 32 │ 32 │ 32 │ ≥64 │
│_POSIX_V7_LP64_OFF64 │ 32 │ 64 │ 64 │ 64 │
│_POSIX_V7_LPBIG_OFFBIG │ ≥32 │ ≥64 │ ≥64 │ ≥64 │
└────────────────────────── ┴─────────────────────── ─────┴──────────┘
ການປະຕິບັດທັງຫມົດຈະສະຫນັບສະຫນູນຫນຶ່ງຫຼືຫຼາຍສະພາບແວດລ້ອມທີ່ width ຂອງ
ປະເພດຕໍ່ໄປນີ້ແມ່ນບໍ່ໃຫຍ່ກວ່າຄວາມກວ້າງຂອງປະເພດ ຍາວ:
blksize_t ptrdiff_t tcflag_t
cc_t ຂະ ໜາດ wchar_t
mode_t speed_t wint_t
nfds_t ssize_t
pid_t suseconds_t
ໄຟລ໌ທີ່ສາມາດປະຕິບັດໄດ້ທີ່ສ້າງຂຶ້ນເມື່ອສະພາບແວດລ້ອມເຫຼົ່ານີ້ຖືກເລືອກຈະຕ້ອງຢູ່ໃນທີ່ເຫມາະສົມ
ຮູບແບບສໍາລັບການປະຕິບັດໂດຍ exec ຄອບຄົວຂອງຫນ້າທີ່. ແຕ່ລະສະພາບແວດລ້ອມອາດຈະເປັນຫນຶ່ງໃນ
ຄົນໃນ ຕາຕະລາງ 4-4, ດໍາເນີນໂຄງການ ສະພາບແວດລ້ອມ: ປະເພດ ຂະຫນາດ, ຫຼືມັນອາດຈະເປັນສະພາບແວດລ້ອມອື່ນ.
ຊື່ສໍາລັບສະພາບແວດລ້ອມທີ່ຕອບສະຫນອງຄວາມຕ້ອງການນີ້ຈະຖືກຜະລິດໂດຍ a getconf
ຄໍາສັ່ງໂດຍໃຊ້ argument POSIX_V7_WIDTH_RESTRICTED_ENVS, ເປັນ - ບັນຊີລາຍການແຍກອອກ
ຊື່ທີ່ເຫມາະສົມສໍາລັບການໃຊ້ກັບ getconf −v ທາງເລືອກ. ຖ້າຫຼາຍກວ່າຫນຶ່ງສະພາບແວດລ້ອມຕອບສະຫນອງ
ຄວາມຕ້ອງການ, ຊື່ຂອງສະພາບແວດລ້ອມທັງຫມົດດັ່ງກ່າວຈະໄດ້ຮັບຜົນຜະລິດໃນສາຍແຍກຕ່າງຫາກ. ໃດ
ຊື່ເຫຼົ່ານີ້ສາມາດຖືກນໍາໃຊ້ໃນຕໍ່ມາ getconf ຄໍາສັ່ງທີ່ຈະໄດ້ຮັບທຸງ
ສະເພາະສະພາບແວດລ້ອມທີ່ມີຄໍາຕໍ່ທ້າຍຕໍ່ໄປນີ້ເພີ່ມຂຶ້ນຕາມຄວາມເຫມາະສົມ:
_CFLAGS ເພື່ອໃຫ້ໄດ້ຮັບທຸງ C compiler.
_LDFLAGS ເພື່ອຮັບເອົາທຸງ linker/loader.
_LIBS ເພື່ອເອົາຫ້ອງສະໝຸດ.
ຄວາມຕ້ອງການນີ້ອາດຈະຖືກໂຍກຍ້າຍອອກໃນສະບັບໃນອະນາຄົດ.
ເມື່ອຜົນປະໂຫຍດນີ້ປະມວນຜົນໄຟລ໌ທີ່ມີຟັງຊັນທີ່ເອີ້ນວ່າ ຕົ້ນຕໍ(), ມັນຈະເປັນ
ກຳນົດດ້ວຍປະເພດຜົນຕອບແທນທຽບເທົ່າກັບ int. ການນໍາໃຊ້ກັບຄືນມາຈາກການໂທໃນເບື້ອງຕົ້ນເພື່ອ
ຕົ້ນຕໍ() ຈະທຽບເທົ່າ (ນອກເໜືອໄປຈາກບັນຫາຂອບເຂດພາສາ) ກັບການເອີ້ນ
ການທ່ອງທ່ຽວ() ກັບຄ່າທີ່ສົ່ງຄືນ. ຮອດຈຸດສິ້ນສຸດຂອງການໂທເບື້ອງຕົ້ນກັບ ຕົ້ນຕໍ() ຈະເປັນ
ເທົ່າກັບການໂທ ການທ່ອງທ່ຽວ(0). ການປະຕິບັດຈະບໍ່ປະກາດຕົວແບບສໍາລັບການນີ້
function
ການປະຕິບັດການສະຫນອງການກໍານົດຄ່າສໍາລັບ C compiler flags, linker/loader flags,
ແລະຫ້ອງສະຫມຸດສໍາລັບແຕ່ລະສະພາບແວດລ້ອມທີ່ສະຫນັບສະຫນູນ. ໃນເວລາທີ່ຄໍາຮ້ອງສະຫມັກຕ້ອງໃຊ້ສະເພາະ
ສະພາບແວດລ້ອມການຂຽນໂປລແກລມແທນທີ່ຈະເປັນສະພາບແວດລ້ອມການດໍາເນີນໂຄງການເລີ່ມຕົ້ນ
ໃນຂະນະທີ່ການສັງລວມ, ຄໍາຮ້ອງສະຫມັກຄັ້ງທໍາອິດຈະກວດສອບວ່າການປະຕິບັດສະຫນັບສະຫນູນ
ສະພາບແວດລ້ອມທີ່ຕ້ອງການ. ຖ້າຫາກວ່າສະພາບແວດລ້ອມການຂຽນໂປລແກລມທີ່ຕ້ອງການໄດ້ຮັບການສະຫນັບສະຫນູນ, ຄໍາຮ້ອງສະຫມັກ
ຫຼັງຈາກນັ້ນຈະຮຽກຮ້ອງ c99 ກັບທຸງ C compiler ທີ່ເຫມາະສົມເປັນທາງເລືອກທໍາອິດສໍາລັບການ
ລວບລວມ, ທຸງ linker/loader ທີ່ເຫມາະສົມຫຼັງຈາກທາງເລືອກອື່ນຍົກເວັ້ນ −l ແຕ່ກ່ອນ
operands ຫຼື −l ທາງເລືອກ, ແລະຫ້ອງສະຫມຸດທີ່ເຫມາະສົມໃນຕອນທ້າຍຂອງ operands ແລະ
−l ຕົວເລືອກ
ແອັບພລິເຄຊັ່ນທີ່ສອດຄ່ອງກັນຈະບໍ່ພະຍາຍາມເຊື່ອມຕໍ່ກັນໄຟລ໌ວັດຖຸທີ່ລວບລວມໄວ້
ຮູບແບບການຂຽນໂປຼແກຼມທີ່ແຕກຕ່າງກັນ. ຄໍາຮ້ອງສະຫມັກຍັງຈະໄດ້ຮັບຮູ້ວ່າຂໍ້ມູນ binary ວາງໄວ້ໃນ
ໜ່ວຍຄວາມຈຳທີ່ໃຊ້ຮ່ວມກັນ ຫຼືໃນໄຟລ໌ອາດຈະບໍ່ຮັບຮູ້ໂດຍແອັບພລິເຄຊັນທີ່ສ້າງຂຶ້ນສຳລັບອັນອື່ນ
ຮູບແບບການຂຽນໂປລແກລມ.
ຕາຕະລາງ 4-5: ດໍາເນີນໂຄງການ ສະພາບແວດລ້ອມ: c99 Arguments
┌────────────────────────── ┬───────────────────── ──────────────────────────── ┐
│ດໍາເນີນໂຄງການ ສະພາບແວດລ້ອມ ││ c99 Arguments │
│ getconf ຊື່ │ ການນໍາໃຊ້ │ getconf ຊື່ │
├───────────────────────── ┼────────────────── ──────────────────────────── ┤
│_POSIX_V7_ILP32_OFF32 │ C Compiler Flags │ POSIX_V7_ILP32_OFF32_CFLAGS │
│ │ Linker/Loader Flags │ POSIX_V7_ILP32_OFF32_LDFLAGS │
│ │ ຫ້ອງສະໝຸດ │ POSIX_V7_ILP32_OFF32_LIBS │
├───────────────────────── ┼────────────────── ──────────────────────────── ┤
│_POSIX_V7_ILP32_OFFBIG │ C Compiler Flags │ POSIX_V7_ILP32_OFFBIG_CFLAGS │
│ │ ທຸງ Linker/Loader │ POSIX_V7_ILP32_OFFBIG_LDFLAGS │
│ │ ຫ້ອງສະໝຸດ │ POSIX_V7_ILP32_OFFBIG_LIBS │
├───────────────────────── ┼────────────────── ──────────────────────────── ┤
│_POSIX_V7_LP64_OFF64 │ C Compiler Flags │ POSIX_V7_LP64_OFF64_CFLAGS │
│ │ Linker/Loader Flags │ POSIX_V7_LP64_OFF64_LDFLAGS │
│ │ ຫ້ອງສະໝຸດ │ POSIX_V7_LP64_OFF64_LIBS │
├───────────────────────── ┼────────────────── ──────────────────────────── ┤
│_POSIX_V7_LPBIG_OFFBIG │ C Compiler Flags │ POSIX_V7_LPBIG_OFFBIG_CFLAGS │
│ │ Linker/Loader Flags │ POSIX_V7_LPBIG_OFFBIG_LDFLAGS │
│ │ ຫ້ອງສະໝຸດ │ POSIX_V7_LPBIG_OFFBIG_LIBS │
└────────────────────────── ┴──────────────────── ────────────────────────────── ┘
ນອກເຫນືອຈາກສະພາບແວດລ້ອມການຂຽນໂປລແກລມຂະຫນາດຂ້າງເທິງ, ການປະຕິບັດທັງຫມົດຍັງ
ສະຫນັບສະຫນູນສະພາບແວດລ້ອມການຕັ້ງໂຄງການຫຼາຍກະທູ້ທີ່ເປັນ orthogon ກັບທັງຫມົດຂອງ
ສະພາບແວດລ້ອມການຂຽນໂປລແກລມທີ່ລະບຸໄວ້ຂ້າງເທິງ. ໄດ້ getconf ຜົນປະໂຫຍດສາມາດນໍາໃຊ້ເພື່ອໃຫ້ໄດ້ຮັບທຸງສໍາລັບ
ສະພາບແວດລ້ອມການຂຽນໂປລແກລມ threaded, ດັ່ງທີ່ໄດ້ລະບຸໄວ້ໃນ ຕາຕະລາງ 4-6, ກະທູ້ ດໍາເນີນໂຄງການ
ສິ່ງແວດລ້ອມ: c99 Arguments.
ຕາຕະລາງ 4-6: ກະທູ້ ດໍາເນີນໂຄງການ ສິ່ງແວດລ້ອມ: c99 Arguments
┌────────────────────────── ┬───────────────────── ─────────────────────── ┐
│ດໍາເນີນໂຄງການ ສະພາບແວດລ້ອມ ││ c99 Arguments │
│ getconf ຊື່ │ ການນໍາໃຊ້ │ getconf ຊື່ │
├───────────────────────── ┼────────────────── ─────────────────────── ┤
│_POSIX_THREADS │ C Compiler Flags │ POSIX_V7_THREADS_CFLAGS │
│ │ ທຸງ Linker/Loader │ POSIX_V7_THREADS_LDFLAGS │
└────────────────────────── ┴──────────────────── ─────────────────────── ┘
ທຸງສະພາບແວດລ້ອມການຂຽນໂປລແກລມເຫຼົ່ານີ້ອາດຈະຖືກນໍາໃຊ້ຮ່ວມກັບຂະຫນາດໃດໆຂອງປະເພດ
ສະພາບແວດລ້ອມການຂຽນໂປລແກລມສະຫນັບສະຫນູນໂດຍການຈັດຕັ້ງປະຕິບັດ.
ອອກ STATUS
ຄ່າທາງອອກຕໍ່ໄປນີ້ຈະຖືກສົ່ງຄືນ:
0 ສໍາເລັດການລວບລວມຫຼືແກ້ໄຂການເຊື່ອມຕໍ່.
>0 ເກີດຄວາມຜິດພາດຂຶ້ນ.
ຂໍ້ສັງເກດ OF ຄວາມຜິດພາດ
ເມື່ອໃດ c99 ພົບກັບຄວາມຜິດພາດການລວບລວມຂໍ້ມູນທີ່ເຮັດໃຫ້ໄຟລ໌ວັດຖຸບໍ່ຖືກສ້າງ, ມັນ
ຈະຂຽນການວິນິດໄສກັບຄວາມຜິດພາດມາດຕະຖານແລະສືບຕໍ່ລວບລວມລະຫັດແຫຼ່ງອື່ນໆ
operands, ແຕ່ມັນຈະບໍ່ປະຕິບັດໄລຍະການເຊື່ອມໂຍງແລະສົ່ງຄືນສະຖານະພາບການອອກທີ່ບໍ່ແມ່ນສູນ. ຖ້າ
ການແກ້ໄຂການເຊື່ອມຕໍ່ແມ່ນບໍ່ສໍາເລັດ, ຂໍ້ຄວາມວິນິດໄສຈະໄດ້ຮັບການຂຽນເປັນຄວາມຜິດພາດມາດຕະຖານແລະ
c99 ອອກດ້ວຍສະຖານະທີ່ບໍ່ແມ່ນສູນ. ຄໍາຮ້ອງສະຫມັກທີ່ສອດຄ່ອງຈະຕ້ອງອີງໃສ່ສະຖານະການອອກ
of c99, ແທນທີ່ຈະຢູ່ໃນທີ່ມີຢູ່ແລ້ວຫຼືຮູບແບບຂອງໄຟລ໌ປະຕິບັດໄດ້.
ໄດ້ ດັ່ງຕໍ່ໄປນີ້ ພາກສ່ວນ ມີ ຂໍ້ມູນ.
ຄໍາຮ້ອງສະຫມັກ ການນໍາໃຊ້
ນັບຕັ້ງແຕ່ c99 ຜົນປະໂຫຍດປົກກະຕິຈະສ້າງໄຟລ໌ໃນໄດເລກະທໍລີປະຈຸບັນໃນລະຫວ່າງ
ຂະບວນການລວບລວມ, ໂດຍປົກກະຕິມັນເປັນສິ່ງຈໍາເປັນທີ່ຈະດໍາເນີນການ c99 ຜົນປະໂຫຍດໃນໄດເລກະທໍລີໃນ
ເຊິ່ງໄຟລ໌ສາມາດສ້າງໄດ້.
ກ່ຽວກັບລະບົບທີ່ໃຫ້ຄວາມສອດຄ່ອງຂອງ POSIX (ເບິ່ງປະລິມານຄໍານິຍາມພື້ນຖານຂອງ POSIX.1-2008,
ບົດ 2, ຄວາມສອດຄ່ອງ), c99 ຕ້ອງການພຽງແຕ່ທາງເລືອກການພັດທະນາພາສາ C; XSI-
ລະບົບສອດຄ່ອງສະເຫມີສະຫນອງ c99.
ການປະຕິບັດປະຫວັດສາດບາງຢ່າງໄດ້ສ້າງ .o ໄຟລ໌ເມື່ອ −ຄ ບໍ່ໄດ້ລະບຸໄວ້ ແລະອື່ນໆອີກ
ຫຼາຍກວ່າຫນຶ່ງໄຟລ໌ແຫຼ່ງແມ່ນໃຫ້. ເນື່ອງຈາກພື້ນທີ່ນີ້ຖືກປະໄວ້ໂດຍບໍ່ໄດ້ລະບຸ, ແອັບພລິເຄຊັນບໍ່ສາມາດ
ຂຶ້ນກັບ .o ໄຟລ໌ທີ່ກໍາລັງຖືກສ້າງຂື້ນ, ແຕ່ມັນຍັງຕ້ອງໄດ້ຮັບການກະກຽມສໍາລັບການທີ່ກ່ຽວຂ້ອງ .o ໄຟລ໌ທີ່
ທີ່ມີຢູ່ແລ້ວໄດ້ຖືກລຶບຖິ້ມໃນຕອນທ້າຍຂອງການແກ້ໄຂການເຊື່ອມຕໍ່.
ມີຜົນສະທ້ອນທີ່ເປັນໄປໄດ້ວ່າຖ້າຜູ້ໃຊ້ສະຫນອງສະບັບຂອງມາດຕະຖານ
ຫນ້າທີ່ (ກ່ອນທີ່ພວກມັນຈະຖືກພົບໂດຍ implicit −l c ຫຼືຈະແຈ້ງ −l m), ນັ້ນ
ຮຸ່ນເຫຼົ່ານັ້ນຈະຖືກໃຊ້ແທນຮຸ່ນມາດຕະຖານ. ມີເຫດຜົນຕ່າງໆ
ນີ້ອາດຈະບໍ່ເປັນຄວາມຈິງ (ຫນ້າທີ່ກໍານົດເປັນ macros, manipulations for clean name space,
ແລະອື່ນໆ), ດັ່ງນັ້ນການມີຢູ່ຂອງໄຟລ໌ທີ່ມີຊື່ໃນລັກສະນະດຽວກັນກັບຫ້ອງສະຫມຸດມາດຕະຖານ
ພາຍໃນ −ລ ໄດເລກະທໍລີຖືກລະບຸຢ່າງຊັດເຈນເພື່ອຜະລິດພຶດຕິກໍາທີ່ບໍ່ໄດ້ລະບຸ.
ຟັງຊັນທັງໝົດທີ່ລະບຸໄວ້ໃນປະລິມານສ່ວນຕິດຕໍ່ລະບົບຂອງ POSIX.1-2008 ອາດຈະຖືກເຮັດ
ເຫັນໄດ້ໂດຍການປະຕິບັດໃນເວລາທີ່ຫ້ອງສະຫມຸດມາດຕະຖານ C ຖືກຄົ້ນຫາ. ສອດຄ່ອງ
ແອັບພລິເຄຊັ່ນຕ້ອງຮ້ອງຂໍໃຫ້ຊອກຫາຫ້ອງສະໝຸດມາດຕະຖານອື່ນໆຢ່າງຈະແຈ້ງເມື່ອເຮັດວຽກ
ເຮັດໃຫ້ເຫັນໄດ້ໂດຍຫ້ອງສະຫມຸດເຫຼົ່ານັ້ນຖືກນໍາໃຊ້.
ໃນມາດຕະຖານ ISO C ການສ້າງແຜນທີ່ຈາກຕົວອັກສອນແຫຼ່ງທາງກາຍະພາບໄປຫາແຫຼ່ງ C
ຊຸດຕົວອັກສອນແມ່ນຖືກກໍານົດໂດຍການປະຕິບັດ. ການປະຕິບັດອາດຈະຕັດຕົວອັກສອນຊ່ອງຫວ່າງ
ກ່ອນທີ່ຈະສິ້ນສຸດ ຂອງເສັ້ນ (ທາງກາຍະພາບ) ເປັນສ່ວນຫນຶ່ງຂອງແຜນທີ່ນີ້ແລະ, ເປັນ
ຜົນສະທ້ອນຂອງການນີ້, ຫນຶ່ງຫຼືຫຼາຍຕົວອັກສອນຊ່ອງຂາວ (ແລະບໍ່ມີຕົວອັກສອນອື່ນໆ) ລະຫວ່າງ
ກ ລັກສະນະແລະ ລັກສະນະທີ່ສິ້ນສຸດສາຍການຜະລິດ
ຜົນໄດ້ຮັບທີ່ກໍານົດການຈັດຕັ້ງປະຕິບັດ. ແອັບພລິເຄຊັນແບບພົກພາບໍ່ຄວນໃຊ້ໂຄງສ້າງດັ່ງກ່າວ.
ບາງ c99 compilers ບໍ່ສອດຄ່ອງກັບ POSIX.1-2008 ບໍ່ຮອງຮັບ trigraphs ຕາມຄ່າເລີ່ມຕົ້ນ.
ຕົວຢ່າງ
1. ຕົວຢ່າງການນໍາໃຊ້ຕໍ່ໄປນີ້ລວບລວມ foo.c ແລະສ້າງໄຟລ໌ປະຕິບັດໄດ້ ຟູ:
c99 −o ຟູ foo.c
ຕົວຢ່າງການນໍາໃຊ້ຕໍ່ໄປນີ້ລວບລວມ foo.c ແລະສ້າງໄຟລ໌ວັດຖຸ foo.o:
c99 −ຄ foo.c
ຕົວຢ່າງການນໍາໃຊ້ຕໍ່ໄປນີ້ລວບລວມ foo.c ແລະສ້າງໄຟລ໌ປະຕິບັດໄດ້ ກ:
c99 foo.c
ຕົວຢ່າງການນໍາໃຊ້ຕໍ່ໄປນີ້ລວບລວມ foo.c, ເຊື່ອມຕໍ່ມັນກັບ bar.o, ແລະສ້າງ
ແຟ້ມການບໍລິຫານ ກ. ມັນຍັງອາດຈະສ້າງແລະອອກ foo.o:
c99 foo.c bar.o
2. ຕົວຢ່າງຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນວິທີການທີ່ແອັບພລິເຄຊັນທີ່ໃຊ້ threads interfaces ສາມາດທົດສອບໄດ້
ສະຫນັບສະຫນູນແລະນໍາໃຊ້ສະພາບແວດລ້ອມການຂຽນໂປລແກລມທີ່ສະຫນັບສະຫນູນ 32-bit int, ຍາວ, ແລະ ຕົວຊີ້
ປະເພດແລະ off_t ພິມໂດຍໃຊ້ຢ່າງໜ້ອຍ 64 bits:
offbig_env=$(getconf _POSIX_V7_ILP32_OFFBIG)
if [ $offbig_env != "-1" ] && [ $offbig_env != "ບໍ່ໄດ້ກໍານົດ" ]
ຫຼັງຈາກນັ້ນ
c99 $(getconf POSIX_V7_ILP32_OFFBIG_CFLAGS) \
$(getconf POSIX_V7_THREADS_CFLAGS) -D_XOPEN_SOURCE=700 \
$(getconf POSIX_V7_ILP32_OFFBIG_LDFLAGS) \
$(getconf POSIX_V7_THREADS_LDFLAGS) foo.c -o ຟູ \
$(getconf POSIX_V7_ILP32_OFFBIG_LIBS) \
-l pthread
ອື່ນ
echo ILP32_OFFBIG ດໍາເນີນໂຄງການ ສະພາບແວດລ້ອມ ບໍ່ ສະຫນັບສະຫນູນ
ການທ່ອງທ່ຽວ 1
fi
3. ຕົວຢ່າງຕໍ່ໄປນີ້ຊີ້ແຈງການນໍາໃຊ້ແລະການໂຕ້ຕອບຂອງ −ລ ແລະ −l ຕົວເລືອກ
ພິຈາລະນາກໍລະນີໃນໂມດູນໃດ ac ຟັງຊັນການໂທ f() ໃນຫ້ອງສະຫມຸດ libQ.a, ແລະໂມດູນ
bc ຟັງຊັນການໂທ g() ໃນຫ້ອງສະຫມຸດ libp.a. ສົມມຸດວ່າຫ້ອງສະຫມຸດທັງສອງຢູ່ໃນ
/a/b/c. ເສັ້ນຄໍາສັ່ງທີ່ຈະລວບລວມແລະເຊື່ອມຕໍ່ໃນແບບທີ່ຕ້ອງການແມ່ນ:
c99 −ລ /a/b/c main.o ac −l Q bc −l p
ໃນກໍລະນີນີ້ −ລ ທາງເລືອກພຽງແຕ່ຕ້ອງການກ່ອນຫນ້າທໍາອິດ −l ທາງເລືອກ, ນັບຕັ້ງແຕ່ທັງສອງ libQ.a
ແລະ libp.a ອາໃສຢູ່ໃນໄດເລກະທໍລີດຽວກັນ.
ຫຼາຍ −ລ ທາງເລືອກຕ່າງໆສາມາດຖືກນໍາໃຊ້ໃນເວລາທີ່ການປະທະກັນຊື່ຫ້ອງສະຫມຸດເກີດຂຶ້ນ. ການກໍ່ສ້າງໃນ
ຕົວຢ່າງກ່ອນຫນ້ານີ້, ສົມມຸດວ່າຜູ້ໃຊ້ຕ້ອງການໃຊ້ໃຫມ່ libp.a, ໃນ /a/a/a, ແຕ່
ຍັງຕ້ອງການ f() ຈາກ /a/b/c/libQ.a:
c99 −ລ /a/a/a −ລ /a/b/c main.o ac −l Q bc −l p
ໃນຕົວຢ່າງນີ້, ຕົວເຊື່ອມຕໍ່ຄົ້ນຫາ −ລ ທາງເລືອກໃນຄໍາສັ່ງທີ່ກໍານົດໄວ້, ແລະຊອກຫາ
/a/a/a/libp.a ກ່ອນທີ່ຈະ /a/b/c/libp.a ໃນເວລາທີ່ການແກ້ໄຂການອ້າງອີງສໍາລັບ bc. ຄໍາສັ່ງຂອງ
ໄດ້ −l ທາງເລືອກແມ່ນຍັງມີຄວາມສໍາຄັນ, ຢ່າງໃດກໍຕາມ.
4. ຕົວຢ່າງຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນວ່າແອັບພລິເຄຊັນສາມາດໃຊ້ສະພາບແວດລ້ອມການຂຽນໂປຼແກຼມໄດ້ແນວໃດ
ຄວາມກວ້າງຂອງປະເພດຕໍ່ໄປນີ້: blksize_t, cc_t, mode_t, nfds_t, pid_t, ptrdiff_t,
ຂະ ໜາດ, speed_t, ssize_t, suseconds_t, tcflag_t, wchar_t, wint_t
ແມ່ນບໍ່ໃຫຍ່ກວ່າຄວາມກວ້າງຂອງປະເພດ ຍາວ:
# ຫນ້າທໍາອິດ ເລືອກ ຫນຶ່ງ of ໄດ້ ລາຍຊື່ ສະພາບແວດລ້ອມ ...
# ... ຖ້າບໍ່ມີຂໍ້ຈໍາກັດເພີ່ມເຕີມ, ທໍາອິດຈະເຮັດ:
CENV=$(getconf POSIX_V7_WIDTH_RESTRICTED_ENVS | head -nl)
# ... ຫຼື, ຖ້າສະພາບແວດລ້ອມທີ່ສະຫນັບສະຫນູນໄຟລ໌ຂະຫນາດໃຫຍ່ແມ່ນມັກ,
# ຊອກຫາຊື່ທີ່ມີ "OFF64" ຫຼື "OFFBIG". (ອັນນີ້ເລືອກ
# ຄົນສຸດທ້າຍໃນລາຍຊື່ຖ້າບໍ່ກົງກັນ.)
ສໍາລັບ CENV ໃນ $(getconf POSIX_V7_WIDTH_RESTRICTED_ENVS)
do
ກໍລະນີ $CENV ໃນ
*OFF64*|*OFFBIG*) break ;;
ວ່າ C
ເຮັດ
# ຊື່ສະພາບແວດລ້ອມທີ່ເລືອກສາມາດຖືກນໍາໃຊ້ເຊັ່ນນີ້:
c99 $(getconf ${CENV}_CFLAGS) -D _POSIX_C_SOURCE=200809L \
$(getconf ${CENV}_LDFLAGS) foo.c -o foo \
$(getconf ${CENV}_LIBS)
ສະຖານທີ່
ໄດ້ c99 ຜົນປະໂຫຍດແມ່ນອີງໃສ່ c89 ຜົນປະໂຫຍດເບື້ອງຕົ້ນໄດ້ຖືກນໍາສະເຫນີໃນ ISO POSIX-2: 1993
ມາດຕະຖານ.
ບາງສ່ວນຂອງການປ່ຽນແປງຈາກ c89 ປະກອບມີຄວາມສາມາດໃນການຕັດທາງເລືອກແລະຕົວປະຕິບັດການ
(ເຊິ່ງຫຼາຍ c89 ການປະຕິບັດອະນຸຍາດໃຫ້ເຖິງແມ່ນວ່າມັນບໍ່ໄດ້ຖືກລະບຸ), ຄໍາອະທິບາຍ
of −l ເປັນທາງເລືອກແທນທີ່ຈະເປັນ operand, ແລະການດັດແປງເນື້ອໃນຂອງ
ສ່ວນຫ້ອງສະໝຸດມາດຕະຖານເພື່ອບັນຊີສຳລັບສ່ວນຫົວ ແລະທາງເລືອກໃໝ່; ຍົກຕົວຢ່າງ,
ເພີ່ມໃສ່ຄໍາອະທິບາຍຂອງ −l rt, ແລະ −l trace ເພີ່ມສໍາລັບທາງເລືອກການຕິດຕາມ.
POSIX.1-2008 ລະບຸວ່າ c99 utility ຕ້ອງສາມາດນໍາໃຊ້ໄຟລ໌ປົກກະຕິສໍາລັບ *.o
ໄຟລ໌ແລະສໍາລັບ ກ ໄຟລ໌. ການປະຕິບັດແມ່ນບໍ່ເສຍຄ່າເພື່ອຂຽນທັບໄຟລ໌ທີ່ມີຢູ່ແລ້ວຂອງອື່ນໆ
ປະເພດໃນເວລາທີ່ພະຍາຍາມສ້າງໄຟລ໌ວັດຖຸແລະໄຟລ໌ທີ່ປະຕິບັດໄດ້, ແຕ່ບໍ່ຈໍາເປັນຕ້ອງ
ເຮັດແນວນັ້ນ. ຖ້າມີບາງອັນນອກເໜືອໄປຈາກໄຟລ໌ປົກກະຕິຖືກລະບຸໄວ້ ແລະໃຊ້ມັນບໍ່ສຳເລັດ
ເຫດຜົນ, c99 ຈໍາເປັນຕ້ອງໄດ້ອອກຂໍ້ຄວາມວິນິດໄສແລະອອກດ້ວຍການອອກທີ່ບໍ່ແມ່ນສູນ
ສະຖານະ. ແຕ່ສໍາລັບບາງປະເພດໄຟລ໌, ບັນຫາອາດຈະບໍ່ສັງເກດເຫັນເປັນເວລາດົນນານ. ສໍາລັບ
ຕົວຢ່າງ, ຖ້າ FIFO ມີຊື່ ກ ມີຢູ່ໃນລະບົບປະຈຸບັນ, c99 ອາດຈະພະຍາຍາມເປີດ
ກ ແລະຈະ hang ໃນ ເປີດ() ໂທຫາຈົນກ່ວາຂະບວນການອື່ນເປີດ FIFO ສໍາລັບການອ່ານ.
ຫຼັງຈາກນັ້ນ, c99 ອາດຈະຂຽນສ່ວນໃຫຍ່ຂອງ ກ ກັບ FIFO ແລະລົ້ມເຫລວໃນເວລາທີ່ມັນພະຍາຍາມຊອກຫາກັບຄືນໄປບ່ອນໃກ້ຊິດ
ໄປຫາຈຸດເລີ່ມຕົ້ນຂອງໄຟລ໌ເພື່ອໃສ່ເວລາ (FIFOs ບໍ່ແມ່ນໄຟລ໌ທີ່ຊອກຫາໄດ້). ໄດ້ c99
ຜົນປະໂຫຍດແມ່ນຍັງອະນຸຍາດໃຫ້ອອກການວິນິດໄສທັນທີຖ້າຫາກວ່າມັນພົບ ກ or *.o
ໄຟລ໌ທີ່ບໍ່ແມ່ນໄຟລ໌ປົກກະຕິ. ສໍາລັບການນໍາໃຊ້ແບບພະກະພາ, ຄໍາຮ້ອງສະຫມັກຄວນຮັບປະກັນວ່າມີ
ກ, −o option-argument, ຫຼື *.o ໄຟລ໌ທີ່ສອດຄ້ອງກັບອັນໃດນຶ່ງ *.ຄ ໄຟລ໌ບໍ່ຂັດກັນ
ກັບຊື່ທີ່ໃຊ້ແລ້ວທີ່ບໍ່ແມ່ນໄຟລ໌ປົກກະຕິຫຼືການເຊື່ອມຕໍ່ສັນຍາລັກທີ່ຊີ້ໃຫ້ເຫັນເຖິງ
ໄຟລ໌ປົກກະຕິ.
ໃນຫຼາຍລະບົບ, ຄໍາຮ້ອງສະຫມັກຫຼາຍກະທູ້ດໍາເນີນການໃນສະພາບແວດລ້ອມການຂຽນໂປຼແກຼມທີ່ເປັນ
ແຕກຕ່າງຈາກທີ່ນໍາໃຊ້ໂດຍຄໍາຮ້ອງສະຫມັກກະທູ້ດຽວ. ການຂຽນໂປລແກລມຫຼາຍກະທູ້ນີ້
ສະພາບແວດລ້ອມ (ນອກເຫນືອໄປຈາກຈໍາເປັນຕ້ອງລະບຸ −l pthread ໃນເວລາເຊື່ອມຕໍ່) ອາດຈະຕ້ອງການ
ທຸງເພີ່ມເຕີມທີ່ຈະຖືກກໍານົດເມື່ອສ່ວນຫົວຖືກປະມວນຜົນໃນເວລາລວບລວມ (−D_REENTRANT ເປັນ
ທົ່ວໄປ). ສະພາບແວດລ້ອມການຂຽນໂປລແກລມນີ້ແມ່ນເປັນມຸມສາກກັບການຂຽນໂປລແກລມຂະຫນາດປະເພດ
ສະພາບແວດລ້ອມທີ່ໄດ້ກ່າວມາຂ້າງເທິງແລະລະບຸໄວ້ໃນ ຕາຕະລາງ 4-4, ດໍາເນີນໂຄງການ ສະພາບແວດລ້ອມ: ປະເພດ
ຂະຫນາດ. ສະບັບຂອງມາດຕະຖານນີ້ເພີ່ມ getconf utility calls ສະຫນອງ C compiler
ທຸງ ແລະ ທຸງ linker/loader ທີ່ຈໍາເປັນເພື່ອສະຫນັບສະຫນູນຄໍາຮ້ອງສະຫມັກຫຼາຍກະທູ້. ໃຫ້ສັງເກດວ່າໃນ
ລະບົບທີ່ຄໍາຮ້ອງສະຫມັກກະທູ້ດຽວແມ່ນກໍລະນີພິເສດຂອງຫຼາຍກະທູ້
ຄໍາຮ້ອງສະຫມັກ, ທັງສອງອັນນີ້ getconf ການໂທອາດຈະສົ່ງຄືນ NULL strings; ກ່ຽວກັບການຈັດຕັ້ງປະຕິບັດອື່ນໆ
ທັງສອງສະຕຣິງເຫຼົ່ານີ້ອາດຈະເປັນສະຕຣິງທີ່ບໍ່ແມ່ນ NULL.
ຄະນະກໍາມະການມາດຕະຖານ C ໄດ້ປະດິດ trigraphs (ເຊັ່ນ: "??!" ເປັນຕົວແທນ '|') ໄປ
ແກ້ໄຂບັນຫາການເຄື່ອນທີ່ຂອງລັກສະນະໃນສະພາບແວດລ້ອມການພັດທະນາໂດຍອີງໃສ່ລະດັບຊາດ
ຕົວແປຂອງຊຸດຕົວອັກສອນມາດຕະຖານ ISO/IEC 7:646 1991-bit. ຢ່າງໃດກໍຕາມ, ສະພາບແວດລ້ອມເຫຼົ່ານີ້
ໄດ້ລ້າສະໄຫມແລ້ວໂດຍເວລາທີ່ມາດຕະຖານ ISO C ທໍາອິດຖືກເຜີຍແຜ່, ແລະໃນທາງປະຕິບັດ
trigraphs ຍັງບໍ່ທັນໄດ້ຖືກນໍາໃຊ້ສໍາລັບຈຸດປະສົງຂອງເຂົາເຈົ້າ, ແລະປົກກະຕິແລ້ວແມ່ນມີຈຸດປະສົງທີ່ຈະມີ
ຄວາມຫມາຍຕົ້ນສະບັບຂອງພວກເຂົາຢູ່ໃນ K&R C. ຕົວຢ່າງເຊັ່ນ, ໃນພາກປະຕິບັດ string ແຫຼ່ງພາສາ C ເຊັ່ນ
"ແມ່ນຫຍັງ??!" ປົກກະຕິແລ້ວມີຈຸດປະສົງທີ່ຈະສິ້ນສຸດໃນສອງ ລັກສະນະແລະ
, ບໍ່ຢູ່ໃນ '|'.
ອະນາຄົດ DIRECTIONS
ບໍ່ມີ.
ໃຊ້ c99posix ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net