Π’ экосистСмС 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ сущСствуСт масса инструмСнтов для управлСния ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π°, ΠΈ срСди Π½ΠΈΡ… особняком стоят Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ компилятора. Π­Ρ‚ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ инструкции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΅Ρ‰Π΅ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π³ΠΈΠ±ΠΊΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ процСсс компиляции, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ лишниС участки ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΡ… Π² зависимости ΠΎΡ‚ условий.

МногиС Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ ΠΏΡƒΡ‚Π°ΡŽΡ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ языка, Π½ΠΎ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Π°. Если ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ…ΠΎΠ΄ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² runtime, Ρ‚ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° этапС ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ модуля. ПониманиС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹Π²Π°ΡŽΡ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ 1Π‘, критичСски Π²Π°ΠΆΠ½ΠΎ для написания чистого, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π² Ρ€Π°Π·Π½Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ², ΠΈΡ… синтаксис ΠΈ практичСскиС сцСнарии примСнСния. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… для кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ управлСния Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠ΄Π°.

ΠžΠ±Ρ‰Π°Ρ концСпция ΠΈ синтаксис Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ компилятора Π² 1Π‘ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа # (Ρ…ΡΡˆ). Π­Ρ‚ΠΎ слуТит сигналом для прСпроцСссора ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½ΡƒΡŽ строку Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Бинтаксис строг ΠΈ Π½Π΅ допускаСт Π»ΠΈΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ…ΡΡˆΠ΅ΠΌ ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ написаниС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС компиляции, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ систСма воспримСт это ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΈΠ»ΠΈ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

Основная Ρ†Π΅Π»ΡŒ использования Ρ‚Π°ΠΊΠΈΡ… конструкций β€” ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅: "этот кусок ΠΊΠΎΠ΄Π° Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π² управляСмом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ" ΠΈΠ»ΠΈ "эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠΉ, Ссли вСрсия ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π½ΠΈΠΆΠ΅ 8.3". Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΌ ΠΈ избавляСт ΠΎΡ‚ нСобходимости ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ исполняСмыми инструкциями. Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ запуска прилоТСния ΠΈΡ… ΡƒΠΆΠ΅ Π½Π΅ сущСствуСт Π² памяти β€” ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π° этапС компиляции модуля.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ рСгистрозависимы. НаписаниС #Если ΠΈ #Ссли ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π² зависимости ΠΎΡ‚ настроСк Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, Π½ΠΎ стандартом считаСтся написаниС с Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹, ΠΊΠ°ΠΊ Π² справкС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ условной компиляции

Бамая ΠΎΠ±ΡˆΠΈΡ€Π½Π°Ρ Π³Ρ€ΡƒΠΏΠΏΠ° инструкций β€” это Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ условной компиляции. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° Π² зависимости ΠΎΡ‚ Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… условий. Π­Ρ‚ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ для создания ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… (толстый/Ρ‚ΠΎΠ½ΠΊΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚, Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚, сСрвСр).

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ элСмСнтами здСсь ΡΠ²Π»ΡΡŽΡ‚ΡΡ конструкции #Если, #Π˜Π½Π°Ρ‡Π΅ ΠΈ #ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ. Π›ΠΎΠ³ΠΈΠΊΠ° ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Если, Π½ΠΎ выполняСтся строго Π½Π° этапС чтСния модуля. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠšΠ»ΠΈΠ΅Π½Ρ‚, Π‘Π΅Ρ€Π²Π΅Ρ€, Π’Π½Π΅ΡˆΠ½Π΅Π΅Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Π΄Π΅ ΠΊΠΎΠ΄ выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅:

#Если ΠšΠ»ΠΈΠ΅Π½Ρ‚ Π’ΠΎΠ³Π΄Π°

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΠ‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅()

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ!");

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

#ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ

Если этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ скомпилирован для сСрвСрного выполнСния, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΠ‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ просто исчСзнСт ΠΈΠ· ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ экономит рСсурсы ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ошибки Π²Ρ‹Π·ΠΎΠ²Π° клиСнтских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π° сСрвСрС.

  • πŸ”Ή #Если β€” Π½Π°Ρ‡Π°Π»ΠΎ Π±Π»ΠΎΠΊΠ° с условиСм.
  • πŸ”Ή #Π˜Π½Π°Ρ‡Π΅ β€” Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ, выполняСмый, Ссли условиС Π»ΠΎΠΆΠ½ΠΎ.
  • πŸ”Ή #ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ β€” ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° условной Π»ΠΎΠ³ΠΈΠΊΠΈ.
πŸ“Š Какой Ρ€Π΅ΠΆΠΈΠΌ компиляции Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
Волстый ΠΊΠ»ΠΈΠ΅Π½Ρ‚
Π’ΠΎΠ½ΠΊΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚
Π’Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚
Π‘Π΅Ρ€Π²Π΅Ρ€ 1Π‘

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ влоТСнности условий. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΡ…, создавая слоТныС логичСскиС Π΄Π΅Ρ€Π΅Π²ΡŒΡ. Однако Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ΅ услоТнСниС ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ, поэтому ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ областями видимости.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ областСй видимости

Помимо условий, критичСски Π²Π°ΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ областями видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #ΠžΠ±Π»Π°ΡΡ‚ΡŒ ΠΈ #ΠšΠΎΠ½Π΅Ρ†ΠžΠ±Π»Π°ΡΡ‚ΠΈ. Они Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π½ΠΎ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ Π΅Π³ΠΎ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ систСмы.

ИспользованиС областСй позволяСт ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ слуТСбныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΊΠΎΠ΄Π°, сворачивая ΠΈΡ… Π² Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… модулях, Π³Π΄Π΅ количСство ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² исчисляСтся сотнями. Навигация ΠΏΠΎ Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ становится ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятной.

Бинтаксис ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ прост:

#ΠžΠ±Π»Π°ΡΡ‚ΡŒ Π‘Π»ΡƒΠΆΠ΅Π±Π½Ρ‹Π΅ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

Ѐункция Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉΠ Π°ΡΡ‡Π΅Ρ‚()

// Π›ΠΎΠ³ΠΈΠΊΠ° расчСта

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

#ΠšΠΎΠ½Π΅Ρ†ΠžΠ±Π»Π°ΡΡ‚ΠΈ

БистСма 1Π‘ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° областСй, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ, Π‘Π»ΡƒΠΆΠ΅Π±Π½Ρ‹ΠΉ, ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉΠ˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ. ИспользованиС этих ΠΈΠΌΠ΅Π½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ стандартным ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ создании Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ) ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ·Π²Π½Π΅, Π° ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ.

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ стандартныС ΠΈΠΌΠ΅Π½Π° областСй (ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉΠ˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ, Π‘Π»ΡƒΠΆΠ΅Π±Π½Ρ‹ΠΉ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваши ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π±Ρ‹Π»ΠΈ совмСстимы с ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… настроСк.

НС стоит Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ областями Π±Π΅Π· нСобходимости. Π“Π»ΡƒΠ±ΠΈΠ½Π° влоТСния Π±ΠΎΠ»Π΅Π΅ 3-4 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ затрудняСт Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅Π³ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ плоской ΠΈ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ.

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ

Π’ соврСмСнных вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ появились Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΎΠ½ΠΊΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΈΡ… выдСляСтся Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #Аннотация, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для присвоСния ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ элСмСнтам ΠΊΠΎΠ΄Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… свойств.

Аннотации часто ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с внСшними ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ (УстарСл) ΠΈΠ»ΠΈ скрытый, Π½Π΅ удаляя Π΅Π³ΠΎ физичСски ΠΈΠ· ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ обСспСчиваСт ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ.

Π’Π°ΠΊΠΆΠ΅ сущСствуСт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #Вставка, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ€Π΅Π΄ΠΊΠΈΡ… случаях для внСдрСния тСкста ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² прямо Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ компиляции. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ большого количСства ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ сгСнСрированных Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° НазначСниС ΠžΠ±Π»Π°ΡΡ‚ΡŒ примСнСния
#Аннотация Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅
#Вставка Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ внСшнСго тСкста Π›ΡŽΠ±ΠΎΠ΅ мСсто модуля
#Если Условная компиляция Π’Π΅ΡΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ
#ΠžΠ±Π»Π°ΡΡ‚ΡŒ Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΊΠΎΠ΄Π° Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° модуля

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с аннотациями слСдуСт Π±Ρ‹Ρ‚ΡŒ остороТным. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ указанная аннотация ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ станСт нСдоступСн для Π²Ρ‹Π·ΠΎΠ²Π° ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ошибки Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слоТно ΠΎΡ‚Π»ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° этапС компиляции.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ стала стандартом Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ Π² ΠΌΠΈΡ€Π΅ 1Π‘. Π—Π΄Π΅ΡΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΈΠ³Ρ€Π°ΡŽΡ‚ Ρ€ΠΎΠ»ΡŒ моста ΠΌΠ΅ΠΆΠ΄Ρƒ основной ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ бСзопасного обновлСния Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ зависит ΠΎΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ использования областСй ΠΈ условий.

Когда Π²Ρ‹ создаСтС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, систСма Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ваши ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Если ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° находится Π² области ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉΠ˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ Экспорт, ΠΎΠ½Π° становится доступной для Π²Ρ‹Π·ΠΎΠ²Π° ΠΈΠ· основной ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π‘Π΅Π· ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ просто "Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚" Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.

Частая ошибка Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² β€” ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ основной ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π±Π΅Π· использования ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ². Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ условной компиляции ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² основной Π±Π°Π·Π΅ ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΠ°ΠΉΡ‚ΠΈΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…() Π²Π½ΡƒΡ‚Ρ€ΠΈ условия #Если ΠšΠ»ΠΈΠ΅Π½Ρ‚ Или Π‘Π΅Ρ€Π²Π΅Ρ€. Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, систСма Π²Π΅Ρ€Π½Π΅Ρ‚ НСопрСдСлСно, ΠΈ Π²Ρ‹ смоТСтС Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ сцСнарий Π±Π΅Π· ошибки.

Π’Π°ΠΊΠΆΠ΅ стоит ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ…, связанных с Π²Π΅Ρ€ΡΠΈΠΎΠ½Π½ΠΎΡΡ‚ΡŒΡŽ. Π₯отя явных Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² Π²ΠΈΠ΄Π° #ВСрсия8.3.20 Π½Π΅Ρ‚, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ контСкста. Π­Ρ‚ΠΎ позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΈ Π½Π° старых, ΠΈ Π½Π° Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅Π»ΠΈΠ·Π°Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

РаспространСнныС ошибки ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ

НСсмотря Π½Π° простоту синтаксиса, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ошибки ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ. Бамая распространСнная ΠΈΠ· Π½ΠΈΡ… β€” Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ парности Ρ‚Π΅Π³ΠΎΠ². Π—Π°Π±Ρ‹Ρ‚Ρ‹ΠΉ #ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ вСсь ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΉΡΡ ΠΊΠΎΠ΄ модуля Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ условия ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΈΠ· компиляции.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” "лапша" ΠΈΠ· условий. Когда ΠΊΠΎΠ΄ выглядит ΠΊΠ°ΠΊ ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Π½Π°Ρ доска ΠΈΠ· Ρ‡Π΅Ρ€Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ…ΡΡ #Если ΠΈ #Π˜Π½Π°Ρ‡Π΅, Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° становится ΠΊΠΎΡˆΠΌΠ°Ρ€ΠΎΠΌ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π»ΡƒΡ‡ΡˆΠ΅ разнСсти Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ модулям с Ρ‡Π΅Ρ‚ΠΊΠΈΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ сфСрам отвСтствСнности (ΠšΠ»ΠΈΠ΅Π½Ρ‚, Π‘Π΅Ρ€Π²Π΅Ρ€, Π’Ρ‹Π·ΠΎΠ²Π‘Π΅Ρ€Π²Π΅Ρ€Π°).

  • πŸ“Œ ВсСгда Π·Π°ΠΊΡ€Ρ‹Π²Π°ΠΉΡ‚Π΅ Π±Π»ΠΎΠΊΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Ρ‚Π΅Π³Π°ΠΌΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ.
  • πŸ“Œ Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ слоТной влоТСнности Π±ΠΎΠ»Π΅Π΅ 3 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ.
  • πŸ“Œ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ стандартныС ΠΈΠΌΠ΅Π½Π° областСй для совмСстимости.
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅Π»ΠΈΠ·ΠΎΠ². ВсСгда ΡΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ΡΡŒ с синтаксис-ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠΌ вашСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии 1Π‘, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΈΠ»ΠΈ ΡƒΡΡ‚Π°Ρ€Π΅Π²Π°Ρ‚ΡŒ.

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° качСства ΠΊΠΎΠ΄Π° с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ Ρ‚ΠΎΠ½ΠΎΠΌ считаСтся ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ слоТных условий. Если Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ #Если НС Π’Π΅Π±ΠšΠ»ΠΈΠ΅Π½Ρ‚ Π’ΠΎΠ³Π΄Π°, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½. Π­Ρ‚ΠΎ сэкономит врСмя ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΊΠΎΠ΄Π° Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Π˜Ρ‚ΠΎΠ³ΠΈ ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ использованию

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ компилятора β€” это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт Π² арсСналС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° 1Π‘. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π³ΠΈΠ±ΠΊΠΈΠ΅, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. ПониманиС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹Π²Π°ΡŽΡ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ 1Π‘, ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ профСссионала ΠΎΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ… для раздСлСния клиСнтской ΠΈ сСрвСрной Π»ΠΎΠ³ΠΈΠΊΠΈ, для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ структуры ΠΊΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· области ΠΈ для обСспСчСния совмСстимости ΠΏΡ€ΠΈ обновлСниях. Однако Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎ ΠΌΠ΅Ρ€Π΅: ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

πŸ’‘

Π“Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠ΅ использованиС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² сниТаСт количСство ошибок Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π² долгосрочной пСрспСктивС.

РСгулярно ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, убирая ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ условия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π½Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Чистый ΠΊΠΎΠ΄ β€” Π·Π°Π»ΠΎΠ³ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ вашСй ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ #Если ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Если?

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #Если обрабатываСтся Π½Π° этапС компиляции модуля. Если условиС Π»ΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² исполняСмый Ρ„Π°ΠΉΠ». ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Если провСряСтся Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈ ΠΊΠΎΠ΄ присутствуСт Π² Ρ„Π°ΠΉΠ»Π΅ всСгда, просто ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² условиях Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²?

НСт, Π² условиях Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² компиляции ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ константы ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ контСкста (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠšΠ»ΠΈΠ΅Π½Ρ‚, Π‘Π΅Ρ€Π²Π΅Ρ€, Π’ΠΎΠ»ΡΡ‚Ρ‹ΠΉΠšΠ»ΠΈΠ΅Π½Ρ‚). ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠ΄Π΅, нСдоступны Π½Π° этапС компиляции.

Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли Π·Π°Π±Ρ‹Ρ‚ΡŒ #ΠšΠΎΠ½Π΅Ρ†ΠžΠ±Π»Π°ΡΡ‚ΠΈ?

Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ структуру модуля, Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ компиляции систСма выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ синтаксиса, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ Π½Π° Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Π΅Ρ† модуля. ВсС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ послС Π·Π°Π±Ρ‹Ρ‚ΠΎΠ³ΠΎ Ρ‚Π΅Π³Π° Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ этой области.

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ список всСх доступных ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…?

ΠŸΠΎΠ»Π½Ρ‹ΠΉ список доступСн Π² Бинтаксис-ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ "Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ". Π’Π°ΠΊΠΆΠ΅ подсказки ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ символа # Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΊΠΎΠ΄Π°.