Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π΅Ρ„Π°ΠΉΠ½ Π² си

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ прСпроцСссора C#

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

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° прСпроцСссора #nullable устанавливаСт контСкст с Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ ΠΎ допустимости Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ NULL ΠΈ контСкст с прСдупрСТдСниями ΠΎ допустимости Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ NULL. Π­Ρ‚Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° опрСдСляСт, Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL, ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Ρ‹ прСдупрСТдСния ΠΎ допустимости Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ NULL. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ контСкст Π»ΠΈΠ±ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½, Π»ΠΈΠ±ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½.

Оба контСкста ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ исходного ΠΊΠΎΠ΄Π° C#). Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #nullable управляСт контСкстами Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π°Π΄ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ уровня ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π·Π°Π΄Π°Π΅Ρ‚ контСксты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ управляСт, ΠΏΠΎΠΊΠ° другая Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ Π΅Π΅, ΠΈΠ»ΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° исходного Ρ„Π°ΠΉΠ»Π°.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ использования Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²:

Условная компиляция

Для управлСния условной компиляциСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ прСпроцСссора.

Для Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚ SDK, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ символы условной компиляции для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Π² Visual Studio с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ страниц свойств ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ†Π΅Π»Π΅Π²Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ для использования Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Ρ… интСрфСйсов API, ΠΊΠΎΠ³Π΄Π° это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ:

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ символов

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ прСпроцСссора, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ символов для условной компиляции.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ #define нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для объявлСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ констант, ΠΊΠ°ΠΊ это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ дСлаСтся Π² C ΠΈ C++. Для опрСдСлСния констант Π² C# слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСскиС элСмСнты класса ΠΈΠ»ΠΈ структуры. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… констант ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ для Π½ΠΈΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс «Constants».

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ областСй

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ области ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π² структуру, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ прСпроцСссора.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #region позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ структурирования Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΊΠΎΠ΄Π°. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… ΠΊΠΎΠ΄Π° ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΈΠ»ΠΈ нСсколько, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΎΡ‚Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚ΠΎΠΉ части Ρ„Π°ΠΉΠ»Π°, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² настоящСС врСмя ΠΈΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ:

БвСдСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ прСдупрСТдСниях

Π’Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ компилятору ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ошибки ΠΈ прСдупрСТдСния компилятора, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ свСдСниями ΠΎ строках с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ².

#error позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ CS1029 ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ мСста Π² ΠΊΠΎΠ΄Π΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ #error version особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈ сообщаСт ΠΎΠ± ошибкС компилятора CS8304 с сообщСниСм, содСрТащим ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ вСрсии компилятора ΠΈ языка.

#warning позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ компилятора CS1030 ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ мСста Π² ΠΊΠΎΠ΄Π΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #line позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ строки компилятора ΠΈ ΠΏΡ€ΠΈ нСобходимости имя Ρ„Π°ΠΉΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ошибки ΠΈ прСдупрСТдСния.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΎΡ‚Ρ‡Π΅Ρ‚ Π΄Π²Π° прСдупрСТдСния, связанныС с Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ строк. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #line 200 ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ устанавливаСт Π½ΠΎΠΌΠ΅Ρ€ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки 200 (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½ΠΎΠΌΠ΅Ρ€ 6). Π”ΠΎ выполнСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #line Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ имя Ρ„Π°ΠΉΠ»Π° Special. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #line default ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ восстанавливаСт Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΡŽ строк Π² исходноС состояниС с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ строк, Π½ΠΎΠΌΠ΅Ρ€Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ компиляции Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #line hidden скрываСт ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки для ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°. Π’ этом случаС ΠΏΡ€ΠΈ пошаговой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ ΠΊΠΎΠ΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ всС строки ΠΌΠ΅ΠΆΠ΄Ρƒ #line hidden ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ #line (ΠΊΡ€ΠΎΠΌΠ΅ случаСв, ΠΊΠΎΠ³Π΄Π° это Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #line hidden ) Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ ASP.NET Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ опрСдСляСмый ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈ создаваСмый ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ ΠΊΠΎΠ΄. Π’ основном эта функция ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ASP.NET, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… исходного ΠΊΠΎΠ΄Π°.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #line hidden Π½Π΅ влияСт Π½Π° ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° строк Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ… ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ошибки Π² скрытом Π±Π»ΠΎΠΊΠ΅ компилятор ΡƒΠΊΠ°ΠΆΠ΅Ρ‚ Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ имя Ρ„Π°ΠΉΠ»Π° ΠΈ Π½ΠΎΠΌΠ΅Ρ€ строки, Π³Π΄Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π° ошибка.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #line filename Π·Π°Π΄Π°Π΅Ρ‚ имя Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… компилятора. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ фактичСскоС имя Ρ„Π°ΠΉΠ»Π° с исходным ΠΊΠΎΠ΄ΠΎΠΌ. Имя Ρ„Π°ΠΉΠ»Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ (» «). ΠŸΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½ΠΎΠΌΠ΅Ρ€ строки.

Начиная с C# 10 ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #line :

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ этой Ρ„ΠΎΡ€ΠΌΡ‹:

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ создано ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅:

ПослС ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ сопоставлСния пСрСмСнная b находится Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС, Π² ΡˆΠ΅ΡΡ‚ΠΎΠΌ символС.

ΠŸΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки (DSL) ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ этот Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивноС сопоставлСниС исходного Ρ„Π°ΠΉΠ»Π° с созданными Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ C#. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ этого Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π² спСцификации Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ pragma

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

pragma-name β€” имя распознанной ΠΏΡ€Π°Π³ΠΌΡ‹, Π° pragma-arguments β€” Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, относящиСся ΠΊ ΠΏΡ€Π°Π³ΠΌΠ΅.

#pragma warning

#pragma warning ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ прСдупрСТдСния.

warning-list β€” список Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ с Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ-запятой. ΠŸΡ€Π΅Ρ„ΠΈΠΊΡ CS являСтся Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Если Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹, disable ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ всС прСдупрСТдСния, Π° restore Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ всС прСдупрСТдСния.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π² Visual Studio, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ сборку ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π° Π·Π°Ρ‚Π΅ΠΌ поиск Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π² ΠΎΠΊΠ½Π΅ Π’Ρ‹Π²ΠΎΠ΄.

#pragma checksum

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ суммы для исходных Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ с ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ страниц ASP.NET.

«filename» β€” это имя Ρ„Π°ΠΉΠ»Π°, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ трСбуСтся наблюдСниС Π·Π° измСнСниями ΠΈΠ»ΠΈ обновлСниями, «» β€” Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (GUID) для Ρ…ΡΡˆ-Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Π° «checksum_bytes» β€” строка ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Ρ… Ρ†ΠΈΡ„Ρ€, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π±Π°ΠΉΡ‚Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы. Π”ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅Ρ‚Π½Ρ‹ΠΌ числом ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Ρ… Ρ†ΠΈΡ„Ρ€. НСчСтноС число Ρ†ΠΈΡ„Ρ€ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ прСдупрСТдСния Π²ΠΎ врСмя компиляции, ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π°.

ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Visual Studio ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ источника. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ вычисляСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму для исходного Ρ„Π°ΠΉΠ»Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Ρ„Π°ΠΉΠ» Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (PDB) ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ PDB-Ρ„Π°ΠΉΠ» для сравнСния с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммой, вычислСнной ΠΈΠΌ для исходного Ρ„Π°ΠΉΠ»Π°.

Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ASP.NET, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ рассчитанная ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма относится ΠΊ созданному исходному Ρ„Π°ΠΉΠ»Ρƒ, Π° Π½Π΅ Ρ„Π°ΠΉΠ»Ρƒ ASPX. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, #pragma checksum прСдоставляСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм для страниц ASP.NET.

ΠŸΡ€ΠΈ создании ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ASP.NET Π² Visual C# созданный исходный Ρ„Π°ΠΉΠ» содСрТит ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму для ASPX-Ρ„Π°ΠΉΠ»Π°, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ создаСтся источник. Π—Π°Ρ‚Π΅ΠΌ компилятор записываСт эти Π΄Π°Π½Π½Ρ‹Π΅ Π² PDB-Ρ„Π°ΠΉΠ».

Если компилятор Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ #pragma checksum Π² Ρ„Π°ΠΉΠ»Π΅, ΠΎΠ½ вычисляСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму ΠΈ записываСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² PDB-Ρ„Π°ΠΉΠ».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΈ++/ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½Ρ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹

ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² любой компилятор ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Π‘ΠΈ++ ΠΈ Π»ΡŽΠ±ΡƒΡŽ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Π½ΡƒΡŽ Π½Π° этот язык. ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π΄ΠΎ ΠΈΡ… компиляции. ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΈΠ»ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ прСпроцСссора.

Π’Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, ΠΎΠ½ΠΈ всС Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ со Π·Π½Π°ΠΊΠ° Ρ€Π΅ΡˆΡ‘Ρ‚ΠΊΠΈ ( # ) ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»Π΅ строки исходного ΠΊΠΎΠ΄Π°:

#define эта Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° прСдусматриваСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ макросов ΠΈΠ»ΠΈ прСпроцСссорных ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ это Π·Π°ΠΌΠ΅Π½Ρ‹ Π² тСкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. #include позволяСт Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ тСкст Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π² тСкст вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. #undef отмСняСт дСйствиС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #define #if организация условной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ². #ifdef организация условной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΡŽ #else организация условной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ². #endif организация условной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ². #elif организация условной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ². #line ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ строк Π² тСкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. #error Π·Π°Π΄Π°Ρ‘Ρ‚ тСкст диагностичСского сообщСния, выводящиСся ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ошибок. #pragma зависит ΠΎΡ‚ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. # нулСвая, ΠΈΠ»ΠΈ пустая, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°, бСздСйствСнно пропускаСтся.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #define [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #define слуТит для Π·Π°ΠΌΠ΅Π½Ρ‹ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ…ΡΡ констант, ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠ»ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ тСкстовыС ΠΈΠ»ΠΈ числовыС константы, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ константами. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ макроопрСдСлСниями, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ макроопрСдСлСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

Основная Ρ„ΠΎΡ€ΠΌΠ° синтаксиса Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #define :

Π’Π°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 5.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #include [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #include добавляСт содСрТимоС Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„Π°ΠΉΠ». МоТно ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ опрСдСлСния констант ΠΈ ΠΌΠ°ΠΊΡ€ΠΎ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ #include Π² любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„Π°ΠΉΠ». Вставка Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Π° для объСдинСния объявлСний Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ слоТных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. НуТно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° этих Ρ‚ΠΈΠΏΠΎΠ² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² созданный для этих Ρ†Π΅Π»Π΅ΠΉ Ρ„Π°ΠΉΠ».

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

БпСцификация ΠΏΡƒΡ‚ΠΈ это имя Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ имя ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°. Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ имя ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π°. Бинтаксис спСцификации Ρ„Π°ΠΉΠ»Π° зависит ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ компилируСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

ΠŸΡ€ΠΈ поискС Ρ„Π°ΠΉΠ»ΠΎΠ² прСпроцСссор ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ «стандартного» ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°. РасполоТСниС стандартных ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² для Ρ„Π°ΠΉΠ»ΠΎΠ² зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ стандартного ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² руководствС ΠΏΠΎ компилятору.

ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ останавливаСт поиск сразу ΠΆΠ΅ послС обнаруТСния Ρ„Π°ΠΉΠ»Π° с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Если Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Ρ„Π°ΠΉΠ»Π°, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΡƒΡŽ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ( » » ), Ρ‚ΠΎ прСпроцСссор ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Ρ‘ для поиска ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ стандартный ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

Если Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ спСцификация Ρ„Π°ΠΉΠ»Π° являСтся Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠΉ, Ρ‚ΠΎ прСпроцСссор сначала ΠΈΡ‰Π΅Ρ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Β«Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎΒ» Ρ„Π°ΠΉΠ»Π°. Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ„Π°ΠΉΠ» это Ρ„Π°ΠΉΠ», содСрТащий Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ #include. НапримСр, Ссли Ρ„Π°ΠΉΠ» f2 вставляСтся Π² Ρ„Π°ΠΉΠ» f1, Ρ‚ΠΎ f1 Π±ΡƒΠ΄Π΅Ρ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ.

Вставка Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ. Π’. Π΅. Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #include ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сам вставляСтся Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ #include. Π€Π°ΠΉΠ» f2 ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» f3. Π’ этом случаС f1 всС Π΅Ρ‰Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ для f2, Π½ΠΎ Β«Π΄Π΅Π΄ΡƒΡˆΠΊΠΎΠΉΒ» для f3.

ΠŸΡ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ вставкС Ρ„Π°ΠΉΠ»ΠΎΠ² поиск ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² начинаСтся с Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ Π΄Π΅Π΄ΡƒΡˆΠΊΠΈΠ½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, поиск начинаСтся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ исходный Ρ„Π°ΠΉΠ». Если Ρ„Π°ΠΉΠ» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, Ρ‚ΠΎ поиск продолТаСтся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…, Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС компилятора. И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, производится поиск Π² стандартном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅.

Если спСцификация Ρ„Π°ΠΉΠ»Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² ΡƒΠ³Π»ΠΎΠ²Ρ‹Π΅ скобки ( ), Ρ‚ΠΎ прСпроцСссор Π½Π΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ поиска Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Поиск Ρ„Π°ΠΉΠ»Π° начинаСтся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…, Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС компилятора, Π° Π·Π°Ρ‚Π΅ΠΌ Π² стандартном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅.

ДопускаСтся Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ вставки Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄ΠΎ 10 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ. ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… #include прСпроцСссор всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ вставку Π² ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ исходный Ρ„Π°ΠΉΠ».

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #undef [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #undef удаляСт Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ всС Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ появлСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ прСдпроцСссором. Для удалСния опрСдСлСния ΠΌΠ°ΠΊΡ€ΠΎ с использованиСм #undef, Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΌΠ°ΠΊΡ€ΠΎ, Π½Π΅ задавая список ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

МоТно ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ #undef ΠΊ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚ опрСдСлСния. Π’Π΅ΠΌ самым ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡŽ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #undef ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΠ°Ρ€Π΅ с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ #define для задания области исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. НапримСр, нСкоторая функция исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ константы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π΄Π°ΡŽΡ‚ значСния срСды Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #undef Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ #if для управлСния условной компиляциСй исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

УсловныС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #if, #ifdef, #else, #endif, #elif [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

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

Условная компиляция [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #line [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π˜Π·ΠΌΠ΅Π½ΡΠ΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ€ строки ΠΈ имя Ρ„Π°ΠΉΠ»Π° компилятора. Если имя Ρ„Π°ΠΉΠ»Π° ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ, ΠΎΠ½ΠΎ остаСтся ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ. Cинтаксис Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹:

ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ #line 1000 «file.сpp» устанавливаСтся имя исходного Ρ„Π°ΠΉΠ»Π° file.сpp ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ€ строки 1000. Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ€ строки ΠΈ имя Ρ„Π°ΠΉΠ»Π° доступны Ρ‡Π΅Ρ€Π΅Π· константы прСпроцСссора __LINE__ ΠΈ __FILE__.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #error [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #error создаёт Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ сообщСниС ΠΎΠ± ошибкС Π²ΠΎ врСмя компиляции, Π° Π·Π°Ρ‚Π΅ΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС, создаваСмоС этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ, содСрТит ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ token-string. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ token-string Π½Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡŽ макроса. Π­Ρ‚Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π° Π² Ρ…ΠΎΠ΄Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ позволяСт ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΎ противорСчиях Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΠ»ΠΈ ΠΎ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ дСмонстрируСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибки Π²ΠΎ врСмя ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #pragma [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

#pragma это инструкция компилятору, которая опрСдСляСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ #pragma Π² языкС Π‘ΠΈ/Π‘ΠΈ++ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для задания Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΉ компилятору. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих конструкций ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² структурах, Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ прСдупрСТдСния ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #define Arduino IDE

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π΅Ρ„Π°ΠΉΠ½ Π² си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π΅Ρ„Π°ΠΉΠ½ Π² си. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π΅Ρ„Π°ΠΉΠ½ Π² си. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π΅Ρ„Π°ΠΉΠ½ Π² си. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π΅Ρ„Π°ΠΉΠ½ Π² си

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #define Π² Arduino IDE позволяСт Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° значСниям (константам), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ скСтч Π±ΠΎΠ»Π΅Π΅ понятным. Π’.Π΅. ΠΌΠΎΠΆΠ½ΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ имя константы ΠΈΠ»ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² скСтчС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это Π½Π°Π·Π²Π°Π½ΠΈΠ΅. Рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… с описаниСм ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ #define Π² языкС программирования Arduino IDE.

Arduino define описаниС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹

Бинтаксис Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹:

#define

ΠŸΡ€ΠΈ использовании Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π΄Π΅Ρ„Π°ΠΉΠ½ слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ использования ΠΈΠΌΠ΅Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, константы ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ардуино, ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ½ΠΎ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ ΠΏΡ€ΠΈ компиляции. И ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² строчкС Π½Π΅ ставится Ρ‚ΠΎΡ‡ΠΊΠ° с запятой ΠΈ Π·Π½Π°ΠΊ равСнства, ΠΊΠ°ΠΊ это происходит ΠΏΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΠ½Π°Ρ‡Π΅ компилятор выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ. Рассмотрим использованиС #define Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌ описаниСм.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹: Arduino define pin

Π­Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° с ΠΌΠΈΠ³Π°ΡŽΡ‰ΠΈΠΌ Ρ‚Ρ€Π΅Ρ…Ρ†Π²Π΅Ρ‚Π½Ρ‹ΠΌ свСтодиодом. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ присвоили ΠΈΠΌΠ΅Π½Π° для ΠΏΠΈΠ½ΠΎΠ² 11, 12 ΠΈ 13, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ свСтодиод. ΠŸΡ€ΠΈ написании ΠΊΠΎΠ΄Π° Π½Π°ΠΌ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° вмСсто Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π½Π΅ Π²ΡΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ Ρ†Π²Π΅Ρ‚ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΏΠΈΠ½Ρƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½. А ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° автоматичСски Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° RED, GRN, BLU Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ значСния ΠΏΡ€ΠΈ компиляции.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ #ifdef, #ifndef ΠΈ #endif Π² скСтчС

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ #ifdef Arduino IDE провСрят, Π±Ρ‹Π»ΠΎ Π»ΠΈ встрСчСно Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΄Π°Π½Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π½Π΅Π΅, Ссли Π±Ρ‹Π»ΠΎ, Ρ‚ΠΎ ставится Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки ΠΈ Π΄ΠΎ #endif. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ провСряСтся Π±Ρ‹Π» Π»ΠΈ Ρ€Π°Π½Π΅Π΅ Π² #define ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Ссли Π΄Π°, Ρ‚ΠΎ ΠΊΠΎΠ΄ (Π²Ρ‹Π²ΠΎΠ΄ сообщСния Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΏΠΎΡ€Ρ‚Π° Arduino IDE) Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½, Ссли ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, Ρ‚ΠΎ сообщСниС Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ #ifndef провСрят, Π±Ρ‹Π»ΠΎ Π»ΠΈ встрСчСно Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΄Π°Π½Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π½Π΅Π΅ ΠΈ, Ссли Π½Π΅ Π±Ρ‹Π»ΠΎ, Ρ‚ΠΎ ставится Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки ΠΈ Π΄ΠΎ #endif. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ простом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ объявляСм Π½ΠΎΠ²ΡƒΡŽ константу, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ объявляли Π΅Π΅ Π² скСтчС Ρ€Π°Π½Π΅Π΅. Если Π΄Π΅Ρ„Π°ΠΉΠ½ с Ρ‚Π°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡƒΠΆΠ΅ использовался, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ строчки Π²Π½ΡƒΡ‚Ρ€ΠΈ конструкции #ifndef … #endif.

Π—Π°ΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ define Arduino

ΠšΡ€ΠΎΠΌΠ΅ использования Π΄Π΅Ρ„Π°ΠΉΠ½ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ для объявлСния констант, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #define. Π­Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТный, Π½ΠΎ интСрСсный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования define, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΡ… инструкций Π² скСтчС. НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ pinMode() Π½Π° ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ с Π΄Π΅Ρ„Π°ΠΉΠ½ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ pinMode() ΠΎΠ΄Π½ΠΈΠΌ словом Β«outΒ». Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π³Π΄Π΅ Π² скСтчС встрСтится слово Β«outΒ», компилятор подставит строку pinMode(pin, OUTPUT) с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ pin. Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ digitalWrite() ΠΈ delay(). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ RGB свСтодиод ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… свСтодиода с Ардуино Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° скСтча с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ Π΄Π΅Ρ„Π°ΠΉΠ½.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ on(11, 500) ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ строчки Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ функциями, конструкция просто подставляСт Π² ΠΊΠΎΠ΄ Π½ΡƒΠΆΠ½Ρ‹ΠΉ тСкст. Π’ Π±ΠΎΠ»Π΅Π΅ слоТных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π΅ΡΡ‚ΡŒ риск ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ самому ошибки, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² скСтчС ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ дСсятки ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π³Π΄Π΅ Π΄Π΅Ρ„Π°ΠΉΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ. ΠŸΡ€ΠΈ этом Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ошибки компиляции ΠΈΠ»ΠΈ ошибки Π²ΠΎ врСмя исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Arduino define ΠΈΠ»ΠΈ const, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ

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

Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ константу вмСсто Π΄Π΅Ρ„Π°ΠΉΠ½ Π² скСтчС ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ – Π² ΠΊΠΎΠ΄Π΅ вмСсто ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ RED Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ Ρ†ΠΈΡ„Ρ€Π° 11. На константы Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° области видимости Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, использованиСм #define ΠΈΠ»ΠΈ const Π½Π΅ Π΄Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… прСимущСств, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния экономии объСма памяти ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #define

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #define

прСдставляСт собой Π½Π°Π±ΠΎΡ€ лСксСм, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова, константы, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ»ΠΈ выраТСния. Один ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Ρ… символов Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡΡ‚ΡŒ ΠΎΡ‚ (ΠΈΠ»ΠΈ ΠΎΡ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² скобки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²). Если тСкст Π½Π΅ умСщаСтся Π½Π° строкС, Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС; для этого слСдуСт Π½Π°Π±Ρ€Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ½Ρ†Π΅ строки символ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слэш ΠΈ сразу Π·Π° Π½ΠΈΠΌ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ ENTER.

ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡƒΡ‰Π΅Π½. Π’ этом случаС всС экзСмпляры Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΈΠ· исходного тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, сам рассматриваСтся ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΈ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ #if Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 (смотри Ρ€Π°Π·Π΄Π΅Π» 7.4.1).

, Ссли ΠΎΠ½ Π·Π°Π΄Π°Π½, содСрТит ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятыми. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π² спискС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. Π˜Ρ… ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ Π·Π°Π΄Π°Π½Ρ‹. Бписок Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки. ИмСна Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ подставлСны фактичСскиС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠ°ΠΊΡ€ΠΎΠ²Ρ‹Π·ΠΎΠ²Π°. КаТдоС имя Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ число Ρ€Π°Π·.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. НС слСдуСт ΠΏΡƒΡ‚Π°Ρ‚ΡŒ подстановку Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ с ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π² прСпроцСссорС носит чисто тСкстовый Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€. Никаких вычислСний ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΈ этом Π½Π΅ производится.

Π’Ρ‹ΡˆΠ΅ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ вхоТдСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Если Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ прСдставлСн Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ с ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌ эффСктом, Ρ‚ΠΎ это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π°, Π° вмСстС с Π½ΠΈΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΉ эффСкт. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π² этом случаС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΌ.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° макроподстановка, получСнная строка вновь просматриваСтся для поиска Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠΌΠ΅Π½ констант ΠΈ ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ. ΠŸΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ просмотрС Π½Π΅ принимаСтся ΠΊ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ имя Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ макроподстановки. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°

Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΡŽ прСпроцСссора.

#define LENGTH (WIDTH + 10)

#define FILEMESSAGE «ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»

Π½Π΅ ΡƒΠ΄Π°Π»Π°ΡΡŒ ΠΈΠ·-Π·Π° Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ дискового пространства»

#define REG1 register

#define REG2 register

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ WIDTH опрСдСляСтся ΠΊΠ°ΠΊ цСлая константа со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 80, Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ LENGTH β€” ΠΊΠ°ΠΊ тСкст (WIDTH + 10). КаТдоС Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° LENGTH Π² исходный Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π° тСкст (WIDTH + 10), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ послС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° WIDTH прСвратится Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (80 + 10). Π‘ΠΊΠΎΠ±ΠΊΠΈ, ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΠ΅ тСкст (WIDTH + 10), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ:

var = LENGTH * 20;

ПослС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСпроцСссором ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π²ΠΈΠ΄:

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ присваиваСтся var, Ρ€Π°Π²Π½ΠΎ 1800. Π’ отсутствиС скобок Π² ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Π» Π±Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ var Ρ€Π°Π²Π½ΡΠ»ΠΎΡΡŒ Π±Ρ‹ 280, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ опСрация умноТСния ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Ρ‡Π΅ΠΌ опСрация слоТСния.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ опрСдСляСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ FILEMESSAGE. Π•Π³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ продолТаСтся Π½Π° Π²Ρ‚ΠΎΡ€ΡƒΡŽ строку ΠΏΡƒΡ‚Π΅ΠΌ использования символа ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слэш нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ΠΌ клавиши ENTER.

Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Ρ‚Ρ€ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, REG1, REG2, REG3. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ REG1 ΠΈ REG2 ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова register. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ REG3 ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, любоС Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ REG3 Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ΠΎ ΠΈΠ· исходного Ρ„Π°ΠΉΠ»Π°. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ 7.4.1 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ эти Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для задания класса памяти register Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ опрСдСляСтся ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ МАΠ₯. КаТдоС Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° МАΠ₯ Π² исходном Ρ„Π°ΠΉΠ»Π΅ замСняСтся Π½Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ((x)>(Ρƒ))?(x):(Ρƒ), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ вмСсто Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ… ΠΈ Ρƒ подставлСны фактичСскиС. НапримСр, ΠΌΠ°ΠΊΡ€ΠΎΠ²Ρ‹Π·ΠΎΠ²

замСнится Π½Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

замСнится Π½Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² этом ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ с ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌΠΈ эффСктами ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ. НапримСр, ΠΌΠ°ΠΊΡ€ΠΎΠ²Ρ‹Π·ΠΎΠ²

замСнится Π½Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

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

Π’ пятом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ опрСдСляСтся ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ MULT. ΠœΠ°ΠΊΡ€ΠΎΠ²Ρ‹Π·ΠΎΠ² MULT(3,5) Π² тСкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ замСняСтся Π½Π° (3)*(5). ΠšΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ фактичСскиС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ макроопрСдСлСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ слоТными выраТСниями. НапримСр, ΠΌΠ°ΠΊΡ€ΠΎΠ²Ρ‹Π·ΠΎΠ²

замСнится Π½Π° (3+4)*(5+6), Ρ‡Ρ‚ΠΎ равняСтся 76. Π’ отсутствиС скобок Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ подстановки 3+4*5+6 Π±Ρ‹Π» Π±Ρ‹ Ρ€Π°Π²Π΅Π½ 29.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

Новая Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π°ΡΡΡ с Ρ‚ΠΎΡ‡ΠΊΠΈ

4. ΠžΠΏΠ΅Ρ€Π΅ΠΆΠ°ΡŽΡ‰ΠΈΠ΅ описания ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°

4. ΠžΠΏΠ΅Ρ€Π΅ΠΆΠ°ΡŽΡ‰ΠΈΠ΅ описания ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ нСсколько ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ‚. Π΅. структура ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ услоТнСна. Однако эти ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ влоТСнности, поэтому сначала Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠ΄Ρ‚ΠΈ

R.16.9 ΠŸΡƒΡΡ‚Π°Ρ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°

R.16.9 ΠŸΡƒΡΡ‚Π°Ρ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Команда прСпроцСссора Π²ΠΈΠ΄Π°#Π½Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 2: ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ const, enum ΠΈ inline использованию #define

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 2: ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ const, enum ΠΈ inline использованию #define Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π°Π·Π²Π°Ρ‚ΡŒ Β«ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ прСпроцСссора», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ #define Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ относят ΠΊ языку C++. Π’ этом ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Рассмотрим простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€; ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ

4. Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #define, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ printf( ) ΠΈ scanf( )

Π”Π˜Π Π•ΠšΠ’Π˜Π’Π« ΠŸΠ Π•ΠŸΠ ΠžΠ¦Π•Π‘Π‘ΠžΠ Π #define, #include, #undef, #if, #ifdef, #ifndef, #else, #endif

Π”Π˜Π Π•ΠšΠ’Π˜Π’Π« ΠŸΠ Π•ΠŸΠ ΠžΠ¦Π•Π‘Π‘ΠžΠ Π #define, #include, #undef, #if, #ifdef, #ifndef, #else, #endif Π―Π·Ρ‹ΠΊ Π‘ΠΈ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² ΠΏΠΎΠΌΠΎΡ‰ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ программистам, Π° ΠΈΠΌ нравится Π΅Π³ΠΎ прСпроцСссор. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ просматриваСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π΄ΠΎ компилятора (ΠΎΡ‚ΡΡŽΠ΄Π° ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ «ΠΏΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€») ΠΈ замСняСт

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #undef

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок Π’ БП Π’Π‘ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #error. Π•Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚:#error ΠžΠ±Ρ‹Ρ‡Π½ΠΎ эту Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ срСди Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² условной компиляции для обнаруТСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ нСдопустимой ситуации. По Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ #error прСпроцСссор ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΈ Π²Ρ‹Π΄Π°Π΅Ρ‚

ΠŸΡƒΡΡ‚Π°Ρ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°

ΠŸΡƒΡΡ‚Π°Ρ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ БП Π’Π‘ распознаСт ΠΏΡƒΡΡ‚ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· строки, содСрТащСй просто Π·Π½Π°ΠΊ #. Π­Ρ‚Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° всСгда

3.12. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° typedef

3.12. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° typedef Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° typedef позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ синоним для встроСнного Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр:typedef double wages;typedef vectorint vec_int;typedef vec_int test_scores;typedef bool in_attendance;typedef int *Pint;ИмСна, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ typedef, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ

7.7. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° связывания extern «C» A

7.7. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° связывания extern «C» A Если программист Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ языкС, Π² частности Π½Π° Π‘, Ρ‚ΠΎ компилятору Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ нСсколько ΠΈΠ½Ρ‹Π΅ условия. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ порядок ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π²

9.1.5. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° extern «C» ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ A

9.1.5. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° extern «C» ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ A Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ 7.7 ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ связывания extern «C» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° C++ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ находится Π² части, написанной Π½Π° языкС C. Как эта Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° влияСт Π½Π° объявлСния

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ сСкции ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° parallel sections

Бинхронизация ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° critical

Бинхронизация ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° critical Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° critical ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π·Π° Π½Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. <$omp critical имя>ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€; Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ – участок ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ нСсколькими ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ.Волько

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *