ນີ້ແມ່ນຄໍາສັ່ງ c++ decl ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
cdecl, c++decl - ປະກອບການປະກາດປະເພດ C ແລະ C++
ສະຫຼຸບສັງລວມ
cdecl [-a | -+ | -p | -r] [-ciqdDV]
[[ ໄຟ ...] | ອະທິບາຍ ... | ປະກາດ ... | ແມ່ພິມສໍາລັບ ... | ທີ່ກໍານົດໄວ້ ... | ຊ່ວຍເຫຼືອ | ? ]
c++ Decl [-a | -+ | -p | -r] [-ciqdDV]
[[ ໄຟ ...] | ອະທິບາຍ ... | ປະກາດ ... | ແມ່ພິມສໍາລັບ ... | ທີ່ກໍານົດໄວ້ ... | ຊ່ວຍເຫຼືອ | ? ]
ອະທິບາຍ ...
ປະກາດ ...
ແມ່ພິມສໍາລັບ ...
ລາຍລະອຽດ
Cdeccl (ແລະ c++ Decl) ແມ່ນໂຄງການສໍາລັບການເຂົ້າລະຫັດແລະຖອດລະຫັດການປະກາດປະເພດ C (ຫຼື C ++).
ພາສາ C ແມ່ນອີງໃສ່ (ຮ່າງທີ່ສະເຫນີ) X3J11 ANSI ມາດຕະຖານ; ທາງເລືອກ, C
ພາສາອາດຈະອີງໃສ່ຄໍານິຍາມກ່ອນ ANSI ທີ່ກໍານົດໂດຍ Kernighan & Ritchie's ໄດ້ C
ດໍາເນີນໂຄງການ ພາສາ ປື້ມ, ຫຼືພາສາ C ທີ່ກໍານົດໂດຍ Ritchie PDP-11 C compiler.
ພາສາ C++ ແມ່ນອີງໃສ່ Bjarne Stroustrup's ໄດ້ C ++ ດໍາເນີນໂຄງການ ພາສາ, ບວກກັບ
ເວີຊັ່ນ 2.0 ເພີ່ມພາສາ.
OPTIONS
-a ໃຊ້ພາສາ ANSI C ຂອງພາສາ C.
-p ໃຊ້ພາສາທາງສ່ວນຫນ້າຂອງ ANSI ທີ່ກໍານົດໂດຍຫນັງສື Kernighan & Ritchie.
-r ໃຊ້ພາສາທີ່ກໍານົດໂດຍ Ritchie PDP-11 C compiler.
-+ ໃຊ້ພາສາ C++, ແທນທີ່ຈະ C.
-i ດໍາເນີນການໃນຮູບແບບການໂຕ້ຕອບ (ຄ່າເລີ່ມຕົ້ນໃນເວລາທີ່ອ່ານຈາກສະຖານທີ່). ອັນນີ້
ເປີດໃຊ້ການເຕືອນ, ການແກ້ໄຂແຖວ ແລະປະຫວັດເສັ້ນ.
-q ງຽບການກະຕຸ້ນ. ປິດການເຕືອນຢູ່ໃນໂໝດໂຕ້ຕອບ.
-c ສ້າງລະຫັດ C ຫຼື C++ ທີ່ສາມາດລວບລວມໄດ້ເປັນຜົນຜະລິດ. Cdeccl ຈະເພີ່ມເຄື່ອງໝາຍຈຸດໃສ່ທ້າຍ
ຂອງການປະກາດແລະຄູ່ຂອງ curly braces ໃນຕອນທ້າຍຂອງຄໍານິຍາມຟັງຊັນ.
-d ເປີດຂໍ້ມູນການດີບັກ (ຖ້າຖືກລວບລວມຢູ່ໃນ).
-D ເປີດຂໍ້ມູນການດີບັກ YACC (ຖ້າຖືກລວບລວມຢູ່ໃນ).
-V ສະແດງຂໍ້ມູນສະບັບແລະອອກ.
ຮຽກຮ້ອງ
Cdeccl ອາດຈະຖືກຮຽກຮ້ອງພາຍໃຕ້ຈໍານວນຂອງຊື່ທີ່ແຕກຕ່າງກັນ (ໂດຍການປ່ຽນຊື່ການປະຕິບັດໄດ້,
ຫຼືການສ້າງ symlink ຫຼືການເຊື່ອມຕໍ່ຍາກກັບມັນ). ຖ້າມັນຖືກເອີ້ນເປັນ cdecl ຫຼັງຈາກນັ້ນ, ANSI C ແມ່ນ
ພາສາເລີ່ມຕົ້ນ. ຖ້າມັນຖືກເອີ້ນເປັນ c++ Decl ຫຼັງຈາກນັ້ນ, C ++ ແມ່ນຄ່າເລີ່ມຕົ້ນ. ຖ້າມັນຖືກເອີ້ນ
ເຊັ່ນດຽວກັນ ອະທິບາຍ, ແມ່ພິມສໍາລັບ, ຫຼື ປະກາດ ຫຼັງຈາກນັ້ນ, ມັນຈະຕີຄວາມຫມາຍສ່ວນທີ່ເຫຼືອຂອງເສັ້ນຄໍາສັ່ງ
ທາງເລືອກເປັນພາລາມິເຕີຂອງຄໍາສັ່ງນັ້ນ, ປະຕິບັດຄໍາສັ່ງ, ແລະອອກ. ມັນຍັງຈະເຮັດ
ນີ້ຖ້າການໂຕ້ຖຽງທີ່ບໍ່ສະຫຼັບທໍາອິດໃນແຖວຄໍາສັ່ງແມ່ນຫນຶ່ງໃນສາມຄໍາສັ່ງນັ້ນ.
ການປ້ອນຂໍ້ມູນອາດຈະມາຈາກໄຟລ໌.
Cdeccl ອ່ານໄຟລ໌ທີ່ມີຊື່ສໍາລັບຄໍາຖະແຫຼງທີ່ເປັນພາສາທີ່ອະທິບາຍຂ້າງລຸ່ມນີ້. ກ
ການຫັນປ່ຽນແມ່ນເຮັດຈາກພາສານັ້ນມາເປັນ C (C++) ຫຼື pseudo-English. ຜົນໄດ້ຮັບຂອງ
ການຫັນປ່ຽນນີ້ແມ່ນຖືກຂຽນໄວ້ໃນຜົນຜະລິດມາດຕະຖານ. ຖ້າບໍ່ມີຊື່ໄຟລ໌, ຫຼືຊື່ໄຟລ໌
ພົບ ``-'', ການປ້ອນຂໍ້ມູນມາດຕະຖານຈະຖືກອ່ານ. ຖ້າວັດສະດຸປ້ອນມາດຕະຖານມາຈາກ a
terminal, (ຫຼື -i ທາງເລືອກແມ່ນຖືກນໍາໃຊ້), prompt ຈະຖືກຂຽນໃສ່ terminal ກ່ອນແຕ່ລະຄົນ
ສາຍ. ການກະຕຸ້ນເຕືອນສາມາດປິດໄດ້ໂດຍ -q ທາງເລືອກ (ຫຼື ທີ່ກໍານົດໄວ້ ບໍ່ເຕືອນ ຄໍາສັ່ງ). ຖ້າ
cdecl ຖືກເອີ້ນເປັນ ອະທິບາຍ, ປະກາດ or ແມ່ພິມສໍາລັບ, ຫຼືການໂຕ້ຖຽງທໍາອິດແມ່ນຫນຶ່ງໃນຄໍາສັ່ງ
ສົນທະນາຂ້າງລຸ່ມນີ້, ບັນຊີລາຍຊື່ການໂຕ້ຖຽງຈະຖືກຕີຄວາມຫມາຍຕາມໄວຍາກອນທີ່ສະແດງ
ຂ້າງລຸ່ມນີ້ແທນທີ່ຈະເປັນຊື່ໄຟລ໌.
ໃນເວລາທີ່ມັນດໍາເນີນການໂຕ້ຕອບ, cdecl ໃຊ້ຫ້ອງສະຫມຸດ GNU readline ເພື່ອໃຫ້ຄໍາສໍາຄັນ
ສໍາເລັດຮູບແລະປະຫວັດສາດບັນຊີຄໍາສັ່ງ, ມັກຫຼາຍ bash(1) (qv). ກົດ TAB ຈະ
ປະກອບຄໍາສໍາຄັນບາງສ່ວນກ່ອນຕົວກະພິບ, ເວັ້ນເສຍແຕ່ວ່າມີຫຼາຍກວ່າຫນຶ່ງທີ່ເປັນໄປໄດ້
ການສໍາເລັດ, ໃນກໍລະນີ TAB ທີສອງຈະສະແດງບັນຊີລາຍຊື່ຂອງການສໍາເລັດທີ່ເປັນໄປໄດ້ແລະ
ສະແດງເສັ້ນຄຳສັ່ງຄືນໃໝ່. ປຸ່ມລູກສອນຊ້າຍ ແລະຂວາ ແລະ backspace ສາມາດໃຊ້ສໍາລັບ
ການແກ້ໄຂໃນແບບທໍາມະຊາດ, ແລະປຸ່ມລູກສອນຂຶ້ນແລະລົງຈະດຶງເອົາເສັ້ນຄໍາສັ່ງທີ່ຜ່ານມາ
ຈາກປະຫວັດສາດ. ຄີອື່ນໆທີ່ຄຸ້ນເຄີຍທີ່ສຸດ, ເຊັ່ນ Ctrl-U ເພື່ອລຶບຂໍ້ຄວາມທັງໝົດອອກຈາກປຸ່ມ
ຕົວກະພິບກັບຄືນໄປບ່ອນຈຸດເລີ່ມຕົ້ນຂອງເສັ້ນ, ເຮັດວຽກຕາມທີ່ຄາດໄວ້. ມີຄວາມບໍ່ແນ່ນອນລະຫວ່າງ
ໄດ້ int ແລະ ເຂົ້າໄປໃນ ຄໍາສໍາຄັນ, ແຕ່ cdecl ຈະເດົາວ່າອັນໃດເຈົ້າໝາຍເຖິງ, ແລະມັນເດົາສະເໝີ
ຢ່າງຖືກຕ້ອງ.
ທ່ານສາມາດໃຊ້ cdecl ດັ່ງທີ່ທ່ານສ້າງໂຄງການ C ກັບບັນນາທິການເຊັ່ນ vi(1) ຫຼື emacs(1). ເຈົ້າ
ພຽງແຕ່ພິມໃນການປະກາດສະບັບພາສາອັງກິດ pseudo ແລະນໍາໃຊ້ cdecl ເປັນຕົວກອງ
ໄປຫາເສັ້ນ. (ໃນ vi(1), ພິມ ``!!cdeccl''.)
ຖ້າ ສ້າງ ໂຄງການ ທາງເລືອກ -c ຖືກນໍາໃຊ້, ຜົນຜະລິດຈະປະກອບມີເຄິ່ງຈໍ້າສອງເມັດຫຼັງຈາກ
ການປະກາດຕົວແປ ແລະຄູ່ເຊືອກຜູກຫຼັງການປະກາດຟັງຊັນ.
ໄດ້ -V ທາງເລືອກຈະພິມຕົວເລກສະບັບຂອງໄຟລ໌ທີ່ໃຊ້ໃນການສ້າງຂະບວນການ.
ຖ້າແຫຼ່ງຖືກລວບລວມດ້ວຍຂໍ້ມູນ debugging ເປີດ, ໄດ້ -d ທາງເລືອກຈະເປີດໃຊ້
ມັນເປັນຜົນຜະລິດ. ຖ້າແຫຼ່ງຖືກລວບລວມດ້ວຍຂໍ້ມູນການດີບັກ YACC ເປີດ, ໄດ້
-D ທາງເລືອກຈະເຮັດໃຫ້ມັນເປັນຜົນຜະລິດໄດ້.
ຄໍາສັ່ງ LANGUAGE
ມີຫົກຄໍາຖະແຫຼງໃນພາສາ. ໄດ້ ປະກາດ ຖະແຫຼງການປະກອບເປັນປະເພດ C
ການປະກາດຈາກຄໍາອະທິບາຍ verbose. ໄດ້ ແມ່ພິມສໍາລັບ ຖະແຫຼງການປະກອບ C ປະເພດ Cast ເປັນ
ອາດຈະປາກົດຢູ່ໃນການສະແດງອອກ. ໄດ້ ອະທິບາຍ ຖະແຫຼງການຖອດລະຫັດການປະກາດປະເພດ C ຫຼື
ໂຍນ, ການຜະລິດຄໍາອະທິບາຍ verbose. ໄດ້ ຊ່ວຍເຫຼືອ (ຫຼື ?) ຖະແຫຼງການສະຫນອງການຊ່ວຍເຫຼືອ
ຂໍ້ຄວາມ. ໄດ້ ເຊົາ (ຫຼື ການທ່ອງທ່ຽວ) ຄໍາຖະແຫຼງການ (ຫຼືສິ້ນສຸດຂອງໄຟລ໌) ອອກຈາກໂຄງການ. ໄດ້ ທີ່ກໍານົດໄວ້
ຄໍາຖະແຫຼງທີ່ອະນຸຍາດໃຫ້ຕົວເລືອກເສັ້ນຄໍາສັ່ງຖືກຕັ້ງແບບໂຕ້ຕອບ. ແຕ່ລະຄໍາຖະແຫຼງການແມ່ນ
ແຍກໂດຍເຄິ່ງຈໍ້າສອງເມັດ ຫຼືເສັ້ນໃໝ່.
ຄໍາສັບຄ້າຍຄື
ບາງຄໍາສັບຄ້າຍຄືໄດ້ຖືກອະນຸຍາດໃນລະຫວ່າງການປະກາດ:
ລັກສະນະແມ່ນຄໍາສັບຄ້າຍຄືສໍາລັບ char
ຄົງທີ່ແມ່ນຄໍາສັບຄ້າຍຄື const
enumeration ແມ່ນຄໍາສັບຄ້າຍຄື enum
func ແມ່ນຄໍາສັບຄ້າຍຄືຫນ້າທີ່
integer ແມ່ນຄໍາສັບຄ້າຍຄືສໍາລັບ int
ptr ແມ່ນຄໍາສັບຄ້າຍຄືຕົວຊີ້
ref ແມ່ນຄໍາສັບຄ້າຍຄືສໍາລັບການອ້າງອິງ
ret ແມ່ນຄໍາສັບຄ້າຍຄືສໍາລັບການກັບຄືນ
ໂຄງສ້າງແມ່ນຄໍາສັບຄ້າຍຄືໂຄງສ້າງ
vector ແມ່ນຄໍາສັບຄ້າຍຄືສໍາລັບ array
ຄຸນນະສົມບັດການສໍາເລັດ TAB ພຽງແຕ່ຮູ້ກ່ຽວກັບຄໍາທີ່ຢູ່ໃນຖັນຂວາຂອງ
ໂຄງສ້າງ, ບໍ່ແມ່ນຢູ່ໃນຖັນຊ້າຍ. ການສໍາເລັດ TAB ແມ່ນມີປະໂຫຍດຫນ້ອຍຫຼາຍເມື່ອ
ລັກສະນະຊັ້ນນໍາຂອງຄໍາທີ່ແຕກຕ່າງແມ່ນຄືກັນ (ຄໍາທີ່ກົງກັນຂ້າມກັບຄໍາຫນຶ່ງ
ອື່ນ), ແລະການວາງທັງສອງຄໍລໍາຈະເຮັດໃຫ້ເກີດຄວາມຂັດແຍ້ງເລັກນ້ອຍ.
ໄວຍະກອນ
ໄວຍະກອນຕໍ່ໄປນີ້ອະທິບາຍພາສາ. ໃນໄວຍາກອນ, ຄໍາສັບຕ່າງໆໃນ "<>" ບໍ່ແມ່ນ.
terminals, bare low-case words are terminals that stand for himself. ໂຕພິມໃຫຍ່ເປົ່າ
ຄໍາສັບຕ່າງໆແມ່ນ tokens lexical ອື່ນໆ: NOTHING ຫມາຍຄວາມວ່າ string ເປົ່າ; NAME ຫມາຍເຖິງຕົວລະບຸ C;
NUMBER ໝາຍເຖິງສະຕຣິງຂອງຕົວເລກທົດສະນິຍົມ; ແລະ NL ຫມາຍຄວາມວ່າເສັ້ນໃຫມ່ຫຼືເຄິ່ງຈໍ້າສອງເມັດ
ລັກສະນະ.
::= ບໍ່ມີຫຍັງ
| ນ
::= ບໍ່ມີຫຍັງ
| ປະກາດ NAME ເປັນ
| ປະກາດ
| ໂຍນ NAME ເຂົ້າໄປໃນ
| ໂຍນ
| ອະທິບາຍ
| ອະທິບາຍ
| ອະທິບາຍ ( ) ທາງເລືອກ-NAME
| ຕັ້ງ
| ຊ່ວຍ | ?
| ເຊົາ
| ອອກໄປ
::= array ຂອງ
| array NUMBER ຂອງ
| ຟັງຊັນກັບຄືນມາ
| ຟັງຊັນ ( ) ກັບຄືນມາ
| ຊີ້ໄປ
| ຊີ້ໄປຫາສະມາຊິກຂອງຫ້ອງຮຽນ NAME
| ອ້າງເຖິງ
|
::=
| *
| ຊື່ :: *
| &
::= ( )
| ( )
| [ ]
| [ NUMBER ]
| ( )
| NAME
::= ບໍ່ມີຫຍັງ
| ( )
| ( ) ( )
| ( ) ( )
| ( )
| ຊື່ :: *
| *
| &
| [ ]
| [ NUMBER ]
::= |
|
| ໂຄງສ້າງ NAME | ສະຫະພັນ NAME | enum NAME | ຫ້ອງຮຽນ NAME
::= ,
|
|
::= ,
| ບໍ່ມີຫຍັງ
|
|
| ເປັນ
::= int | char | ສອງເທົ່າ | ລອຍ | ໂມຄະ
::= |
::= ສັ້ນ | ຍາວ | ບໍ່ໄດ້ເຊັນ | ເຊັນ |
::= | ບໍ່ມີຫຍັງ
::= const | ຜັນຜວນ | ນາມແຝງ
::= ອັດຕະໂນມັດ | ພາຍນອກ | ລົງທະບຽນ | ສະຖິດ
::= ບໍ່ມີຫຍັງ |
::= ບໍ່ມີຫຍັງ |
| ສ້າງ | nocreate
| ເຕືອນ | ບໍ່ເຕືອນ
| ຣິຕີ້ | preansi | ແອນຊີ | cplusplus
| ດີບັກ | nodebug | yydebug | noyydebug
SET OPTIONS
ໄດ້ ທີ່ກໍານົດໄວ້ ຄໍາສັ່ງໃຊ້ເວລາຫຼາຍທາງເລືອກ. ທ່ານສາມາດພິມ ທີ່ກໍານົດໄວ້ or ທີ່ກໍານົດໄວ້ ທາງເລືອກໃນການ ເຂົ້າໄປເບິ່ງ
ທາງເລືອກທີ່ເລືອກໃນປັດຈຸບັນແລະສະຫຼຸບສັງລວມຂອງທາງເລືອກທີ່ມີຢູ່. ທໍາອິດ
ສີ່ກົງກັບ -a, -p, -r, ແລະ -+ ຕົວເລືອກເສັ້ນຄໍາສັ່ງ, ຕາມລໍາດັບ.
ansi ໃຊ້ພາສາ ANSI C ຂອງພາສາ C.
preansi
ໃຊ້ພາສາທາງສ່ວນຫນ້າຂອງ ANSI ທີ່ກໍານົດໂດຍຫນັງສື Kernighan & Ritchie.
ຣິເຈີດ
ໃຊ້ພາສາທີ່ກໍານົດໂດຍ Ritchie PDP-11 C compiler.
ການເກີນດຸນ
ໃຊ້ພາສາ C++, ແທນທີ່ຈະ C.
[ບໍ່] ເຕືອນ
ເປີດ ຫຼືປິດການເຕືອນຢູ່ໃນໂໝດໂຕ້ຕອບ.
[ບໍ່]ສ້າງ
ເປີດ ຫຼືປິດການຕໍ່ທ້າຍຂອງ semicolon ຫຼື curly braces ກັບການປະກາດ
ຜົນຜະລິດໂດຍ cdecl. ນີ້ສອດຄ່ອງກັບ -c ຕົວເລືອກເສັ້ນທາງຄໍາສັ່ງ.
[ບໍ່]ດີບັກ
ເປີດ ຫຼືປິດຂໍ້ມູນການດີບັກ.
[ບໍ່] yydebug
ເປີດ ຫຼືປິດຂໍ້ມູນການດີບັກ YACC.
ໝາຍເຫດ: ຂໍ້ມູນການດີບັກ ແລະຂໍ້ມູນການດີບັກ YACC ແມ່ນມີໃຫ້ພຽງແຕ່ຖ້າພວກເຂົາມີ
ໄດ້ຖືກລວບລວມເຂົ້າໄປໃນ cdecl. ສອງທາງເລືອກສຸດທ້າຍແມ່ນກົງກັນກັບ -d ແລະ -D ເສັ້ນຄໍາສັ່ງ
ທາງເລືອກ, ຕາມລໍາດັບ. ຂໍ້ມູນ Debugging ປົກກະຕິແລ້ວຖືກນໍາໃຊ້ໃນການພັດທະນາໂຄງການ, ແລະ
ໂດຍທົ່ວໄປແລ້ວບໍ່ໄດ້ຖືກລວບລວມເຂົ້າໃນການປະຕິບັດທີ່ແຈກຢາຍ.
ຕົວຢ່າງ
ເພື່ອປະກາດ array ຂອງຕົວຊີ້ໄປຫາຫນ້າທີ່ຄ້າຍຄື ສູນການຄ້າ(3), ເຮັດ
ປະກາດ fptab ເປັນ array ຂອງ pointer ເພື່ອປະຕິບັດຫນ້າທີ່ກັບຄືນ pointer ເປັນ char
ຜົນໄດ້ຮັບຂອງຄໍາສັ່ງນີ້ແມ່ນ
char *(*fptab[])()
ໃນເວລາທີ່ທ່ານເຫັນການປະກາດນີ້ຢູ່ໃນລະຫັດຂອງຄົນອື່ນ, ທ່ານສາມາດເຮັດໃຫ້ຄວາມຮູ້ສຶກອອກຈາກມັນໂດຍ
ເຮັດ
ອະທິບາຍ char *(*fptab[])()
ການປະກາດທີ່ເຫມາະສົມສໍາລັບການ signal(2), ignoring prototypes ຫນ້າທີ່, ໄດ້ຖືກອະທິບາຍໄດ້ຢ່າງງ່າຍດາຍໃນ
cdeclພາສາຂອງ:
ປະກາດສັນຍານເປັນຫນ້າທີ່ກັບຄືນໄປບ່ອນ pointer ກັບຫນ້າທີ່ກັບຄືນໄປ void
ທີ່ຜະລິດ
ໂມຄະ (*ສັນຍານ())()
ການປະກາດຟັງຊັນທີ່ຜົນໄດ້ຮັບມີສອງຊຸດຂອງວົງເລັບເປົ່າ. ຜູ້ຂຽນຂອງ
ຟັງຊັນດັ່ງກ່າວອາດຈະສົງໄສວ່າຈະວາງພາລາມິເຕີໄວ້ບ່ອນໃດ:
ປະກາດສັນຍານເປັນຟັງຊັນ (arg1,arg2) ກັບຄືນຕົວຊີ້ເພື່ອຟັງຊັນກັບຄືນ void
ສະຫນອງການແກ້ໄຂຕໍ່ໄປນີ້ (ເມື່ອດໍາເນີນການກັບ -c ທາງເລືອກ):
void (*signal(arg1,arg2))() { }
ຖ້າຫາກວ່າພວກເຮົາຕ້ອງການທີ່ຈະເພີ່ມໃນ prototypes ການທໍາງານ, prototype ການທໍາງານສໍາລັບການທໍາງານດັ່ງກ່າວ
as _ອອກ(2) ຈະໄດ້ຮັບການປະກາດກັບ:
ປະກາດ _exit ເປັນຟັງຊັນ (retvalue as int) ກັບຄືນ void
ໃຫ້
void _exit(intvalue) { }
ເປັນຕົວຢ່າງທີ່ສັບສົນຫຼາຍໂດຍໃຊ້ຕົວແບບຟັງຊັນ, signal(2) ສາມາດກໍານົດຢ່າງເຕັມທີ່ເປັນ:
ປະກາດສັນຍານເປັນຟັງຊັນ(x as int, y as pointer to function(int) ກັບຄືນ void)
ກັບຄືນຕົວຊີ້ໄປຫາຟັງຊັນ(int) ກັບຄືນ void
ໃຫ້ (ດ້ວຍ -c)
void (*signal(int x, void (*y)(int )))(int ) { }
Cdeccl ສາມາດຊ່ວຍຊອກຫາບ່ອນທີ່ຈະເອົາຕົວປັບປ່ຽນ "const" ແລະ "volatile" ໃນ
ຖະແຫຼງການ, ດັ່ງນັ້ນ
ປະກາດ foo ເປັນຕົວຊີ້ໄປຫາ const int
ເຮັດໃຫ້
const int *foo
ໃນຂະນະທີ່
ປະກາດ foo ເປັນ const pointer ກັບ int
ເຮັດໃຫ້
int * const foo
C++ Decl ສາມາດຊ່ວຍໃນການປະກາດການອ້າງອີງ, ດັ່ງນັ້ນ
ປະກາດ x ເປັນການອ້າງອີງເຖິງຕົວຊີ້ໄປຫາຕົວອັກສອນ
ເຮັດໃຫ້
char *&x
C++ Decl ສາມາດຊ່ວຍໃຫ້ມີຕົວຊີ້ໄປຫາສະມາຊິກຂອງຫ້ອງຮຽນ, ດັ່ງນັ້ນການປະກາດຕົວຊີ້ໄປຫາ an
ສະມາຊິກຈຳນວນເຕັມຂອງຊັ້ນ X ກັບ
ປະກາດ foo ເປັນຕົວຊີ້ໄປຫາສະມາຊິກຂອງ class X int
ເຮັດໃຫ້
int X::*foo
ແລະ
ປະກາດ foo ເປັນຕົວຊີ້ໄປຫາສະມາຊິກຂອງຟັງຊັນ X (arg1, arg2) ກັບຄືນຕົວຊີ້
ກັບຫ້ອງ Y
ເຮັດໃຫ້
ຊັ້ນ Y *(X::*foo)(arg1, arg2)
ທິດສະດີວິທະຍາ
ການປະກາດ, ໂຍນແລະອະທິບາຍຄໍາຖະແຫຼງທີ່ພະຍາຍາມຊີ້ໃຫ້ເຫັນການກໍ່ສ້າງທີ່ບໍ່ແມ່ນ
ສະຫນັບສະຫນຸນໃນ C. ໃນບາງກໍລະນີ, ການຄາດເດົາແມ່ນເຮັດໃຫ້ສິ່ງທີ່ມີຈຸດປະສົງແທ້ໆ. ໃນເຫຼົ່ານີ້
ໃນກໍລະນີ, ຜົນໄດ້ຮັບ C ແມ່ນການປະກາດຂອງຫຼິ້ນທີ່ semantics ຈະເຮັດວຽກພຽງແຕ່ໃນ Algol-68. ໄດ້
ບັນຊີລາຍຊື່ຂອງໂຄງສ້າງ C ທີ່ບໍ່ໄດ້ຮັບການສະຫນັບສະຫນູນແມ່ນຂຶ້ນກັບວ່າສະບັບພາສາ C ແມ່ນຫຍັງ
ໃຊ້ແລ້ວ (ເບິ່ງຕົວເລືອກ ANSI, pre-ANSI, ແລະ Ritchie). ຊຸດຂອງໂຄງສ້າງ C++ ທີ່ຮອງຮັບ
ແມ່ນ superset ຂອງຊຸດ ANSI, ມີຂໍ້ຍົກເວັ້ນຂອງ ນາມແຝງ ຄຳ ສຳ ຄັນ.
ຂໍ້ມູນອ້າງອິງ
ANSI ມາດຕະຖານ X3.159-1989 (ANSI C)
ISO/IEC 9899:1990 (ມາດຕະຖານ ISO)
FAQ ຂອງ comp.lang.c
http://www.eskimo.com/~scs/C-faq.top.html
ພາກທີ 8.4 ຂອງຄູ່ມືການອ້າງອີງ C ພາຍໃນ ໄດ້ C ດໍາເນີນໂຄງການ ພາສາ ໂດຍ B. Kernighan &
D. Ritchie.
ພາກທີ 8 ຂອງຄູ່ມືການອ້າງອີງ C++ ພາຍໃນ ໄດ້ C ++ ດໍາເນີນໂຄງການ ພາສາ ໂດຍ B.
Stroustrup.
ຂໍ້ຄວນລະວັງ
syntax pseudo-English ແມ່ນ verbose ຫຼາຍເກີນໄປ.
ມີຄວາມອຸດົມສົມບູນຂອງການກວດສອບ semantic ທີ່ບໍ່ໄດ້ເຮັດ.
Cdeccl ໄດ້ຖືກຂຽນກ່ອນທີ່ມາດຕະຖານ ANSI C ຈະສໍາເລັດ, ແລະບໍ່ມີຄວາມພະຍາຍາມໃດໆ
ເພື່ອເຮັດໃຫ້ມັນທັນສະໄຫມ. ຢ່າງໃດກໍຕາມ, ມັນໃກ້ຊິດກັບມາດຕະຖານຫຼາຍ, ເຫັນໄດ້ຊັດເຈນ
ຂໍ້ຍົກເວັ້ນຂອງ ນາມແຝງ.
Cdecclຂອບເຂດຂອງແມ່ນນ້ອຍໂດຍເຈດຕະນາ. ມັນບໍ່ໄດ້ຊ່ວຍໃຫ້ທ່ານຄິດອອກເບື້ອງຕົ້ນ. ມັນ
ຄາດວ່າຫ້ອງຮຽນການເກັບຮັກສາຈະຢູ່ໃນຕອນຕົ້ນຂອງການປະກາດ, ຕິດຕາມດ້ວຍ
const, ຕົວປ່ຽນແປງການຜັນຜວນ ແລະ noalias, ຕາມດ້ວຍປະເພດຂອງຕົວແປ. Cdeccl
ບໍ່ຮູ້ຫຍັງກ່ຽວກັບລາຍການອາກິວເມັນຄວາມຍາວຕົວແປ. (ນີ້ລວມມີ ``...''
syntax.)
Cdeccl ຄິດວ່າການປະກາດທັງໝົດທີ່ທ່ານເວົ້ານັ້ນຈະຖືກໃຊ້ເປັນຄໍານິຍາມພາຍນອກ.
ບາງບໍລິບົດການປະກາດໃນ C ອະນຸຍາດໃຫ້ມີຄວາມຍືດຫຍຸ່ນຫຼາຍກວ່ານີ້. ຕົວຢ່າງນີ້ແມ່ນ:
ປະກາດ argv ເປັນ array ຂອງ array ຂອງ char
ບ່ອນທີ່ cdecl ຕອບສະຫນອງກັບ
ຄຳເຕືອນ: ບໍ່ຮອງຮັບໃນ C -- 'ອາເຣພາຍໃນຂອງຂະໜາດທີ່ບໍ່ໄດ້ລະບຸ'
(ບາງທີເຈົ້າຫມາຍຄວາມວ່າ "array of pointer")
char argv[][]
ສະຫນັບສະຫນູນສໍາລັບການ ນາມແຝງ ຄໍາສໍາຄັນຖືກໃສ່ໃນເພາະວ່າມັນຢູ່ໃນຮ່າງ ANSI
ຂໍ້ສະເພາະ.
AUTHORS
ຕົ້ນສະບັບຂຽນໂດຍ Graham Ross, ປັບປຸງແລະຂະຫຍາຍໂດຍ David Wolverton, Tony Hansen,
ແລະ Merlyn LeRoy.
ສະຫນັບສະຫນູນ GNU readline ແລະພອດ Linux ໂດຍ David R. Conrad,conrad@detroit.freenet.org>
ໃຊ້ c++ decl ອອນລາຍໂດຍໃຊ້ການບໍລິການ onworks.net