c++ decl - ອອນລາຍໃນຄລາວ

ນີ້ແມ່ນຄໍາສັ່ງ 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



ລ່າສຸດ Linux ແລະ Windows ໂຄງການອອນໄລນ໌