ИзлСзС вСрсията Π½Π° IWYU (ΠΈΠ»ΠΈ include-what-you-use), ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°, която позволява Π΄Π° сС ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Ρ‚ излишни ΠΈ Π΄Π° сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ липсващи #include Π² ΠΊΠΎΠ΄Π° Π²ΠΈ Π½Π° C/C++.

β€žΠ’ΠΊΠ»ΡŽΡ‡Π²Π°ΠΉ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρˆβ€œ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° слСдното: Π·Π° всСки символ (Ρ‚ΠΈΠΏ, ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°, функция ΠΈΠ»ΠΈ макрос), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² foo.cc, ΠΈΠ»ΠΈ foo.cc, ΠΈΠ»ΠΈ foo.h трябва Π΄Π° сС Π²ΠΊΠ»ΡŽΡ‡ΠΈ .h Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ Скспортира дСкларацията Π½Π° Ρ‚ΠΎΠ·ΠΈ символ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΡŠΡ‚ include-what-you-use Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° #include Π² ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с Ρ†Π΅Π» ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠΈ Π·Π° корСкция. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Clang ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ вСрсията ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π½Π° Clang.

ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° Ρ†Π΅Π» Π½Π° include-what-you-use Π΅ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΈΠ·Π»ΠΈΡˆΠ½ΠΈΡ‚Π΅ #include. Π—Π° Ρ‚ΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС установи ΠΊΠΎΠΈ #include Π½Π΅ са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π² дадСния Ρ„Π°ΠΉΠ» (ΠΊΠ°ΠΊΡ‚ΠΎ Π·Π° .cc, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° .h) ΠΈ ΠΏΠΎ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° сС замСнят #include с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΈ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ.

Основни ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ

  • Π‘ΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с Clang 17.
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° Π΅ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° псСвдоними Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ (typedef ΠΈ using).
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° Π΅ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° псСвдоними Π½Π° пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° (namespace xyz = foobar).
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΈ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ (typedef struct Foo Bar;).
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€ΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° β€žΠ°Π²Ρ‚ΠΎΠΊΠ°ΡΡ‚β€œ ΠΈ Π²ΡŠΡ€Π½Π°Ρ‚ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, особСно ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° със слоТни шаблонни Ρ‚ΠΈΠΏΠΎΠ²Π΅.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π½ΠΎΠ²Π° ΠΏΡ€Π°Π³ΠΌΠ° IWYU: always_keep, позволяваща Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ Π·Π°Π³Π»Π°Π²Π΅Π½ Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈΠ½Π°Π³ΠΈ трябва Π΄Π° бъдС Π·Π°ΠΏΠ°Π·Π΅Π½, нСзависимо къдС Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½.
  • Автоматично ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° съвпадСния Π·Π° builtins libc++, Π°ΠΊΠΎ libc++ Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½Π°Ρ‚Π° стандартна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°.
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΡΡŠΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡΡ‚Π° Π·Π° заглавията libc++ ΠΈ posix.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster