Π‘ΡΠ°Π½Π΄Π°ΡΡ Π‘ 1999 Π³. [18] ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Β«Π½Π΅ΡΠ²Π½ΠΎΠ³ΠΎ
int
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ·ΡΠ²Π°Π»Π° ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ Π±ΡΠ»Π° ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π°, ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ Π‘ ΡΠΎΠ·Π΄Π°Π» Π±Ρ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΌ ΡΠΈΠΏΠΎΠΌ
int
ΠΡΡΠ³ΠΈΠΌΠΈ Π·Π°ΠΌΠ΅ΡΠ½ΡΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΠΌΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ Π‘ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ
const
volatile
ΠΠ»Ρ ΠΊΠΎΠ΄Π° V7, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅, ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠ΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΎΡΠΈΠΏ. Π ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΡ ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ ΠΊΠ°ΠΊ Π΅ΡΡΡ, ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π΅Π³ΠΎ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ½ Π±ΡΠ» ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½, ΠΈ ΠΊΠ°ΠΊ Π±Ρ Π²Ρ Π΅Π³ΠΎ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ, Π΅ΡΠ»ΠΈ Π±Ρ ΡΠ°ΠΌΠΈ Π·Π°Π³ΡΡΠ·ΠΈΠ»ΠΈ ΠΊΠΎΠ΄.
Π₯ΠΎΡΡ ΡΡΠ°Π½Π΄Π°ΡΡ Π‘ 1999 Π³. Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ Π² Π²Π΅ΡΡΠΈΠΈ 1990 Π³., ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π΄ΠΈΠ°Π»Π΅ΠΊΡΠ° 1990 Π³, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ C99 Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΠΊΠ° ΡΠΈΠΏΠΈΡΠ½ΡΠΌΠΈ. ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: ΠΊΠΎΠ΄ C89 Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° C99, Π° Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ C99 Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡ Π½Π°ΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ API Linux/Unix.
1.4. ΠΠΎΡΠ΅ΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ GNU Π»ΡΡΡΠ΅
Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ GNU ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ GNU? [19] Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ GNU Β«Π»ΡΡΡΠ΅Β» ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌ (ΠΏΠ»Π°ΡΠ½ΡΠΌ ΠΈΠ»ΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΌ) ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ? ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΠ΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½Π°Ρ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ (General Public License β GPL), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ GNU. ΠΠΎ ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ ΠΏΡΠΈΡΠΈΠ½Π°, ΡΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΡΡΠ»ΡΡΠ°ΡΡ, ΠΊΠ°ΠΊ Π»ΡΠ΄ΠΈ Π³ΠΎΠ²ΠΎΡΡΡ: Β«ΠΠ°ΠΉΡΠ΅ GNU-Π²Π΅ΡΡΠΈΡ
xyz
Β«Π‘ΡΠ°Π½Π΄Π°ΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ GNUΒ» (GNU Coding Standards) ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° GNU. ΠΠ½ΠΈ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ ΡΡΠ΄ ΡΠ΅ΠΌ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ GNU Coding Standards ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ
http://www.gnu.org/prep/standards.html
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π»ΠΈΡΡ ΡΠ΅ ΡΠ°ΡΡΠΈ GNU Coding Standards, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
1.4.1. ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ
ΠΠ»Π°Π²Π° 3 GNU Coding Standards ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΠΈΠ΅ ΡΠΎΠ²Π΅ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π§Π΅ΡΡΡΡΠΌΡ Π³Π»Π°Π²Π½ΡΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ (ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌΠΈ ΠΈ Ρ Unix), ΡΠ·ΡΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (ΠΎΠ΄Π½ΠΈΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ, Β«Π½ΠΈΡΠ΅Π³ΠΎΒ»), ΠΈ ΡΠΌΡΡΠ» Β«ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈΒ».
ΠΠ°ΠΆΠ½ΠΎΠΉ ΡΠ΅Π»ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π‘ ΠΈ POSIX, Π° ΡΠ°ΠΊΠΆΠ΅, Π² ΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ, Ρ Berkley Unix. ΠΠΎ ΠΎΠ½Π° Π½Π΅ ΠΏΡΠ΅ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ. ΠΠ±ΡΠ΅ΠΉ ΠΈΠ΄Π΅Π΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΠ΅ΡΠ΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ° ISO ΠΈΠ»ΠΈ POSIX.
ΠΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ GNU ΡΠ²Π»ΡΠ΅ΡΡΡ Π‘, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ ΡΠ·ΡΠΊ. Π ΠΌΠΈΡΠ΅ Unix ΡΡΠ°Π½Π΄Π°ΡΡ Π‘ ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΡΠ΅Π½, Π½ΠΎ Π΅ΡΠ»ΠΈ Π΄Π»Ρ Π²Π°Ρ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΡΠ΄Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π‘, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ. Π₯ΠΎΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ΄Π°ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠ΅ Π‘ ΠΏΠ΅ΡΠ΅Π΄ Π‘++, C++ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΎΠΆΠ΅ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠ±ΡΡΠ΅Π½. ΠΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° GNU, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π½Π° Π‘++, ΡΠ²Π»ΡΠ΅ΡΡΡ
groff
troff
groff
Π‘ΡΠ°Π½Π΄Π°ΡΡΡ ΡΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΠΎΡΠ²Π»Π΅ΠΊΠ°ΡΡΠ΅Π³ΠΎ ΠΌΠ°Π½Π΅Π²ΡΠ°. Π£ΡΠΈΠ»ΠΈΡΡ GNU ΡΡΠ½ΠΎ Π½Π°ΡΠ΅Π»Π΅Π½Ρ Π½Π° ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΄ΡΠΎΠΌ GNU ΠΈ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ GNU Π‘ [20]. ΠΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΄ΡΠΎ Π΅ΡΠ΅ Π½Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΎ, ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ GNU Π½Π° Π½Π΅-GNU ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½Π°, Π½ΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ. Π‘ΡΠ°Π½Π΄Π°ΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅Ρ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ Unix ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Autoconf.
1.4.2. ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠ»Π°Π²Π° 4 GNU Coding Standards ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ±ΡΠΈΠ΅ ΡΠΎΠ²Π΅ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΈΠΆΠ΅ ΠΌΡ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ· Π΅Π΅ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ³ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ. ΠΠ»Π°Π²Π° ΡΠΎΠΊΡΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ , Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ (Π΄Π΅Π»Π°Ρ ΠΈΡ ΡΠ΅Π½ΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌΠΈ) ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ°Ρ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Emacs, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ , ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ ΠΏΠΎΠΏΠ°ΡΡΡ Π² ΡΠΎ ΠΌΠ΅ΡΡΠΎ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΈΠ»ΠΈ ΡΠ°ΠΉΠ»Π΅ Π΄Π°Π½Π½ΡΡ , Π³Π΄Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°.
Π£ΡΠΈΠ»ΠΈΡΡ GNU Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΡ
getopt_long()
gawk -F:...
gawk --field-separator=:...
--help
--version
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ, Π½ΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°,
--verbose
-v
-V
-d
1.4.3. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π‘
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΡΡ GNU Coding Standards ΡΠ²Π»ΡΠ΅ΡΡΡ Π³Π»Π°Π²Π° 5, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π° Π‘, ΠΎΡΠ²Π΅ΡΠ°Ρ ΡΠ°ΠΊΠΈΠ΅ ΡΠ΅ΠΌΡ, ΠΊΠ°ΠΊ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², ΡΠΈΡΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π‘, ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»ΠΈΠ³ΠΈΠΎΠ·Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ; Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ Π»ΡΠ΄Π΅ΠΉ ΡΠ°Π·Π½ΡΠ΅ ΡΡΠΈΠ»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ. ΠΠΈΡΠ½ΠΎ Π½Π°ΠΌ Π½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ ΡΡΠΈΠ»Ρ FSF, ΠΈ Π΅ΡΠ»ΠΈ Π²Ρ Π²Π·Π³Π»ΡΠ½Π΅ΡΠ΅ Π½Π°
gawk
gawk
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ ΠΎΡΡ Π½Π°ΠΌ ΠΈ Π½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ ΡΡΠΈΠ»Ρ FSF [21], ΠΌΡ ΡΡΠ²ΡΡΠ²ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ ΠΊΠΎΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π°ΠΆΠ½ΡΠΌ. ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π² ΡΡΠΈΠ»Π΅ ΠΊΠΎΠ΄Π° Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Π°, ΡΠ΅ΠΌ ΡΠ°ΠΌ ΡΡΠΈΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΠ΅. GNU Coding Standards Π΄Π°Π΅Ρ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΡΠΎΠ²Π΅Ρ. (ΠΠ½ΠΎΠ³Π΄Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠΈΠ»Ρ ΠΊΠΎΠ΄Π°, Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΡΠΏΠΎΡΡΠ΅Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
indent
cb