Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
ΠΡΠΈΠ±ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
ΠΠ ΠΠΠΠ§ΠΠΠΠ: ΠΡΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ Π²ΡΠ²ΠΎΠ΄ΡΡ ΠΎΠΊΠ½ΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ » Build Failed » Π² Π²ΡΠ²ΠΎΠ΄Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°. ΠΡΠ»ΠΈ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΊΠ½ΠΎ, ΡΠΎ ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΡΠΈΠ±ΠΊΠ° Runner Error, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ Π·Π΄Π΅ΡΡ.
ΠΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ:
ΠΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° Π½Π°ΠΉΠ΄Π΅Π½Π° Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ, ΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠΎ:
ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π²Π°ΠΆΠ΄Ρ ΡΠ΅Π»ΠΊΠ½ΡΡΡ Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΈΠ· Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΡΡΠΎΠ±Ρ ΠΎΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΠΉ Π°ΠΊΡΠΈΠ² Π² ΠΏΠΎΠ·ΠΈΡΠΈΠΈ, ΠΎΡΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΉ ΠΊΠ°ΠΊ Π΄Π°ΡΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΡ, ΠΈ Π·Π°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡΡΡ Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ. ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡΡΡ Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ, ΡΡΠΎΠ±Ρ ΡΠΎΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΠΈΠ»ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°. ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Π³Π°Π΄ΠΎΡΠ½ΡΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π½ΠΈΠΆΠ΅ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΊΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΎΠ·Π½Π°ΡΠ°ΡΡ:
Π Π°Π·Π½ΠΎΠ΅
Π‘ΡΡΡΠ½Ρ
Π‘ΠΊΡΠΈΠΏΡΡ, Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ/Π·Π½Π°ΡΠ΅Π½ΠΈΡ
ΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈ ΡΡΠ΅Π΄ΡΡΠ² ΡΠ±ΠΎΡΠΊΠΈ C/C++
Π ΡΡΠ°ΡΡΡΡ , ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΎΠ±ΡΡΡΠ½ΡΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Microsoft C/C++ ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΡΠ±ΠΎΡΠΊΠΈ.
ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Visual Studio ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠ±ΠΎΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠ°Ρ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ. ΠΠΎΡΠ»Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠ±ΠΎΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ, ΡΡΠΎΠ±Ρ Π² ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΎΠΎΠ±ΡΠΈΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΡΠ»ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π΅Π»Π°ΡΡ Π½Π΅Π²Π΅ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ. ΠΡΠΈ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π²ΡΠ΅Π³Π΄Π° Π½Π°ΡΠΈΠ½Π°ΠΉΡΠ΅ Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ (ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ) ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠΉΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ ΡΠ±ΠΎΡΠΊΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠ΅. ΠΠ΄Π½ΠΎ ΠΈΠ· ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
Π‘ΡΡΠ»ΠΊΠΈ Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ ΡΠΏΡΠ°Π²ΠΊΠΈ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Visual C++ ΡΠΏΡΠ°Π²ΠΊΠΈ ΠΈ Community.
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅
ΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ BSCMAKE (BKxxxx)
ΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ «ΠΡΠΎΡΠΌΠΎΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ» (BSCMAKE.EXE).
ΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ
ΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΡΠ±ΠΎΡΠΊΠΈ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Ρ C4000 ΠΏΠΎ C5999
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π½ΡΡ
ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ C++ (CL.EXE).
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΏΠΎ Π²Π΅ΡΡΠΈΡΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°
Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, ΠΏΠΎΡΠ²ΠΈΠ²ΡΠΈΡ
ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°.
ΠΡΠΈΠ±ΠΊΠΈ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ C (Rxxxx)
ΠΡΠΈΠ±ΠΊΠΈ, ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ C (CRT).
ΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ CVTRES (CVTxxxx)
ΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΉΠ»Π° ΡΠ΅ΡΡΡΡΠΎΠ² ΠΠ°ΠΉΠΊΡΠΎΡΠΎΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² COFF (CVTRES.EXE).
ΠΡΠΈΠ±ΠΊΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (CXXxxxx)
ΠΡΠΈΠ±ΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠΎΠΌ ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ.
ΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠ° (LNKxxxx)
ΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠΎΠΌ ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ (LINK.EXE, LIB.EXE, DUMPBIN.EXE, EDITBIN.EXE).
ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ (Mxxxx)
ΠΡΠΈΠ±ΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ.
ΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ NMAKE (Uxxxx)
ΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Microsoft Makefile (NMAKE.EXE).
ΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ»ΡΠ½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ (ΠΠ³ΠΊΡΠΊΡΠΊΡΠΊΡ)
ΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Profile-Guided (PGO).
ΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° (PRJxxxx)
ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π² ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ C++ Project ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ Π² Visual Studio.
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΎΡΠ° ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·Π°ΡΠΎΡΠ°
ΠΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΎΡΠ° ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·Π°ΡΠΎΡΠ° Optimization.
ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° GCC Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° PVS-Studio
GNU Compiler Collection (ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ GCC) β Π½Π°Π±ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° GNU. GCC ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΡΠΎΠ½Π΄ΠΎΠΌ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° ΡΡΠ»ΠΎΠ²ΠΈΡΡ GNU GPL ΠΈ GNU LGPL ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ GNU toolchain. ΠΡΠΎΠ΅ΠΊΡ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ C ΠΈ C++.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ GCC ΠΈΠΌΠ΅Π΅Ρ Ρ ΠΎΡΠΎΡΠΈΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ, ΠΏΠΎΠΌΠΎΠ³Π°ΡΡΠΈΠ΅ Π²ΡΡΠ²Π»ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, GCC ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ GCC ΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΠ²Π»ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ GCC ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Coverity. ΠΠ° ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅, Π΄ΡΠΌΠ°Ρ GCC ΠΏΡΠΎΠ²Π΅ΡΡΠ»ΡΡ ΡΠ½ΡΡΠ·ΠΈΠ°ΡΡΠ°ΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΏΠΎΠΈΡΠΊ ΠΎΡΠΈΠ±ΠΎΠΊ Π² GCC Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΈΡΠΏΡΡΠ°Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΠΊΠΎΠ΄Π° PVS-Studio.
ΠΠ»Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π±ΡΠ»Π° Π²Π·ΡΡΠ° trunk Π²Π΅ΡΡΠΈΡ ΠΈΠ· git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ: (git) commit 00a7fcca6a4657b6cf203824beda1e89f751354b svn+ssh://gcc.gnu.org/svn/gcc/trunk@238976
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. Π‘ΡΠ°ΡΡΡ Π·Π°Π΄Π΅ΡΠΆΠ°Π»Π°ΡΡ Ρ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ, ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠΆΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Ρ. ΠΠΎ ΡΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΡΡΠ°ΡΡΠ΅ ΠΈΡΡΠ΅Π·Π°ΡΡ. ΠΠ»Π°Π²Π½ΠΎΠ΅ β ΡΡΠ°ΡΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ Π²ΡΡΠ²Π»ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΡΠ»Π΅ ΠΈΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ.
ΠΡΠ΅Π΄Π²ΠΈΠ΄Ρ Π΄ΠΈΡΠΊΡΡΡΠΈΡ
ΠΠ°ΠΊ Ρ ΡΠΊΠ°Π·Π°Π» Π²ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ, Ρ ΡΡΠΈΡΠ°Ρ GCC ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Ρ Π²ΡΡΠΎΠΊΠΈΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π°. Π£Π²Π΅ΡΠ΅Π½, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π·Π°Ρ ΠΎΡΡΡ ΠΏΠΎΡΠΏΠΎΡΠΈΡΡ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΡΠΈΠ²Π΅Π΄Ρ ΡΠΈΡΠ°ΡΡ ΠΈΠ· Wikipedia Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅:
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ OpenBSD, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π’Π΅ΠΎ Π΄Π΅ Π Π°Π°Π΄Ρ ΠΈ ΠΡΡΠΎ ΠΡΡΠ±Π΅ΠΊ (Otto Moerbeek), ΠΊΡΠΈΡΠΈΠΊΡΡΡ GCC, Π½Π°Π·ΡΠ²Π°Ρ Π΅Π³ΠΎ Β«Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ, Π³Π»ΡΡΠ½ΡΠΌ, ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠΈΠΌ ΠΏΠ»ΠΎΡ ΠΎΠΉ ΠΊΠΎΠ΄Β».
Π― ΡΡΠΈΡΠ°Ρ ΡΠ°ΠΊΠΈΠ΅ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΡ Π½Π΅ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ. ΠΠ°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ΄ GCC ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΡΡΡΠ΄Π½ΡΡΡ Π΅Π³ΠΎ ΡΡΠ΅Π½ΠΈΠ΅. ΠΠΎ Ρ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΌΠΎΠ³Ρ ΡΠΎΠ³Π»Π°ΡΠΈΡΡΡΡ Ρ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎ Π΅Π³ΠΎ Π³Π»ΡΡΠ½ΠΎΡΡΠΈ. ΠΡΠ»ΠΈ Π±Ρ GCC Π³Π»ΡΡΠΈΠ», Π²ΠΎΠΎΠ±ΡΠ΅ Π±Ρ Π½ΠΈΠ³Π΄Π΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ. ΠΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ GCC Π΄Π΅Π»Π°ΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΡΡ, ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΠΈΠ·ΠΌΠΎΠΌ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ ΠΈΠΌ. Π― ΡΠ°Π΄, ΡΡΠΎ ΠΌΠΎΠ³Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ PVS-Studio Π½Π° ΡΠ°ΠΊΠΎΠΌ Π²ΡΡΠΎΠΊΠΎΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅.
ΠΠ»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ ΡΠΊΠ°ΠΆΠ΅Ρ, ΡΡΠΎ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Clang Π²ΡΡ ΡΠ°Π²Π½ΠΎ ΠΊΡΡΡΠ΅, Π½Π°ΠΏΠΎΠΌΠ½Ρ: Π² Π½ΡΠΌ PVS-Studio ΡΠ°ΠΊΠΆΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΠ» ΠΎΡΠΈΠ±ΠΊΠΈ: 1, 2.
PVS-Studio
Π― ΠΏΡΠΎΠ²Π΅ΡΠΈΠ» ΠΊΠΎΠ΄ GCC Ρ ΠΏΠΎΠΌΠΎΡΡΡ Alpha-Π²Π΅ΡΡΠΈΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° PVS-Studio for Linux. ΠΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌ Π½Π°ΡΠ°ΡΡ Π²ΡΠ΄Π°Π²Π°ΡΡ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π²ΡΠΈΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ Beta-Π²Π΅ΡΡΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΡΠ΅Π½ΡΡΠ±ΡΡ 2016 Π³ΠΎΠ΄Π°. ΠΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡΠ°ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΠ΅ΡΠ²ΡΡ , ΠΊΡΠΎ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Beta-Π²Π΅ΡΡΠΈΡ PVS-Studio for Linux Π½Π° ΡΠ²ΠΎΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π² ΡΡΠ°ΡΡΠ΅ «PVS-Studio ΠΏΡΠΈΠ·Π½Π°ΡΡΡΡ Π² Π»ΡΠ±Π²ΠΈ ΠΊ Linux».
ΠΡΠ»ΠΈ Π²Ρ ΡΠΈΡΠ°Π΅ΡΠ΅ ΡΡΡ ΡΡΠ°ΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΠΎΠ·ΠΆΠ΅, ΡΠ΅ΠΌ ΡΠ΅Π½ΡΡΠ±ΡΡ 2016, ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ PVS-Studio for Linux, ΡΠΎ ΠΏΡΠΈΠ³Π»Π°ΡΠ°Ρ Π²Π°Ρ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°: http://www.viva64.com/ru/pvs-studio/
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ
ΠΡ Π΄ΠΎΠ±ΡΠ°Π»ΠΈΡΡ Π΄ΠΎ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°, ΠΊΠΎΡΠΎΡΡΠΉ, Ρ Π΄ΡΠΌΠ°Ρ, Ρ Π½Π΅ΡΠ΅ΡΠΏΠ΅Π½ΠΈΠ΅ΠΌ ΠΆΠ΄ΡΡ Π½Π°ΡΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠ΅ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ°ΡΡΠΊΠΈ ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π½Π°ΡΠ΅Π» ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈΠ»ΠΈ ΠΊΡΠ°ΠΉΠ½Π΅ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ.
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Ρ Π½Π΅ ΠΌΠΎΠ³Ρ Π²ΡΠ΄Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΏΠΎΠ»Π½ΡΠΉ ΠΎΡΡΡΡ. Π Π½Π΅ΠΌ ΠΏΠΎΠΊΠ° ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΡΡΠΎΡΠ° (Π»ΠΎΠΆΠ½ΡΡ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠΉ), ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π³ΠΎΡΠΎΠ² ΠΊ Π²ΡΡΡΠ΅ΡΠ΅ Ρ ΠΌΠΈΡΠΎΠΌ Linux. ΠΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ΄Π΅Π»Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π»ΠΎΠΆΠ½ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π½Π° ΡΠΈΠΏΠΎΠ²ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΠΎΠΏΡΠΎΠ±ΡΡ ΠΏΠΎΡΡΠ½ΠΈΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅. ΠΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠ³Π°ΡΡΡΡ Π½Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌ assert. ΠΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ Π±ΡΠ²Π°ΡΡ ΡΡΡΡΠΎΠ΅Π½Ρ Π²Π΅ΡΡΠΌΠ° ΡΠ²ΠΎΡΡΠ΅ΡΠΊΠΈ ΠΈ Π½Π°Π΄ΠΎ Π½Π°ΡΡΠΈΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π½Π΅ ΠΎΠ±ΡΠ°ΡΠ°ΡΡ Π½Π° Π½ΠΈΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. ΠΠΎ Π΄Π΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΠΊΡΠΎΡ assert ΠΎΡΠ΅Π½Ρ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ, ΠΈ Π½Π°Π΄ΠΎ ΠΎΠ±ΡΡΠΈΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π²ΡΠ΅ΠΌ ΡΠΈΠΏΠΎΠ²ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌ.
ΠΠΎΡΡΠΎΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² GCC ΠΏΡΠΎΡΡ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ Π²ΡΡ ΠΎΠ΄Π° ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ Beta-Π²Π΅ΡΡΠΈΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°. Π― Π½Π΅ Ρ ΠΎΡΡ ΠΈΡΠΏΠΎΡΡΠΈΡΡ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅ ΠΎΡΡΠ΅ΡΠΎΠΌ, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π½Π΅Π΄ΠΎΠ΄Π΅Π»Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ.
ΠΠ»Π°ΡΡΠΈΠΊΠ° (Copy-Paste)
ΠΠ°ΡΠ½Π΅ΠΌ ΠΌΡ Ρ ΡΠ°ΠΌΠΎΠΉ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ V501. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ°ΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΠΈΠ·-Π·Π° Π½Π΅Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ Copy-Paste ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠ°ΠΌΠΈ, Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΠΌΡΠΌΠΈ ΠΏΡΠΈ Π½Π°Π±ΠΎΡΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° PVS-Studio: V501 There are identical sub-expressions ‘!strcmp(a->v.val_vms_delta.lbl1, b->v.val_vms_delta.lbl1)’ to the left and to the right of the ‘&&’ operator. dwarf2out.c 1428
ΠΡΡΡΡΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΈΡΠΌΠΎΡΡΠ΅ΡΡΡΡ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΡΠΈΠ±ΠΊΠ° ΠΈ Π½Π΅ Π±ΡΠ»Π° Π²ΡΡΠ²Π»Π΅Π½Π° ΠΏΡΠΈ ΠΎΠ±Π·ΠΎΡΠ°Ρ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π΅.
Π€ΡΠ½ΠΊΡΠΈΡ strcmp Π΄Π²Π°ΠΆΠ΄Ρ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ ΡΡΡΠΎΠΊΠΈ. ΠΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, Π²ΡΠΎΡΠΎΠΉ ΡΠ°Π· ΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π½Π΅ ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° lbl1, Π° lbl2. Π’ΠΎΠ³Π΄Π° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
Π₯ΠΎΡΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΊΠΎΠ΄, ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΠΉ Π² ΡΡΠ°ΡΡΠ΅, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π·Π°Π½ΠΈΠΌΠ°Π» ΠΌΠ°Π»ΠΎ ΠΌΠ΅ΡΡΠ° ΠΏΠΎ ΠΎΡΠΈ X. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΠΊΠΎΠ΄ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
ΠΡΠΈΠ±ΠΊΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ΄Π°Π»ΠΎΡΡ Π±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Β«ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ΅Β» Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠΈΠ±ΠΊΡ Π±ΡΠ»ΠΎ Π±Ρ Π»Π΅Π³ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, Π΅ΡΠ»ΠΈ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΡΠ°ΠΊ:
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π» ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π² ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ «ΠΠ»Π°Π²Π½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π° ΠΈ Π²ΡΠ΅Π³ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ» (ΡΠΌ. Π³Π»Π°Π²Ρ N13: ΠΡΡΠ°Π²Π½ΠΈΠ²Π°ΠΉΡΠ΅ ΠΎΠ΄Π½ΠΎΡΠΈΠΏΠ½ΡΠΉ ΠΊΠΎΠ΄ Β«ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉΒ»). Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π²ΡΠ΅ΠΌ, ΠΊΡΠΎ Π·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΉ Π·Π΄Π΅ΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅ΡΡ ΠΎΠ΄Π½Ρ ΠΎΡΠΈΠ±ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ, Ρ ΡΠ²Π΅ΡΠ΅Π½, ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΈΠ·-Π·Π° Copy-Paste:
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° PVS-Studio: V519 The ‘has_avx512vl’ variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 500, 501. driver-i386.c 501
Π ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ has_avx512vl Π΄Π²Π°ΠΆΠ΄Ρ ΠΏΠΎΠ΄ΡΡΠ΄ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ»Π°. Π― ΠΈΠ·ΡΡΠΈΠ» ΠΊΠΎΠ΄ ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ has_avx512ifma. Π‘ΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π° ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ebx & bit_AVX512IFMA. Π’ΠΎΠ³Π΄Π° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°ΠΊΠΈΠΌ:
ΠΠΏΠ΅ΡΠ°ΡΠΊΠ°
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΡ ΠΈΡΠΏΡΡΠ°Π½ΠΈΠ΅ Π²Π°ΡΠ΅ΠΉ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ΄ ΠΈ, Π½Π΅ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ Π½ΠΈΠΆΠ΅, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° PVS-Studio: V528 It is odd that pointer to ‘char’ type is compared with the ‘\0’ value. Probably meant: *xloc.file == ‘\0’. ubsan.c 1472
ΠΠ΄Π΅ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π·Π°Π±ΡΠ» ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ xloc.file == ‘\0’. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΏΡΠΎΡΡΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΡΡ Ρ 0, Ρ.Π΅. Ρ NULL. ΠΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ° ΡΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°Π½Π΅Π΅ ΡΠ°ΠΊΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡ: xloc.file == NULL.
Π₯ΠΎΡΠΎΡΠΎ, ΡΡΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠΉ Π½ΠΎΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π·Π°ΠΏΠΈΡΠ°Π» ΠΊΠ°ΠΊ ‘\0’. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π±ΡΡΡΡΠ΅Π΅ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΎΡΠ΅Π½ ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ. ΠΡΠΎ ΡΡΠΎ Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΈΡΠ°Π» Π² ΠΊΠ½ΠΈΠ³Π΅ (ΡΠΌ. Π³Π»Π°Π²Ρ N9: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π½ΡΠ»Ρ Π»ΠΈΡΠ΅ΡΠ°Π» ‘\0’).
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠΎΠ΄Π°:
Π₯ΠΎΡΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π΅ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΡΡΡΠΈΠΌ ΠΊΠΎΠ΄. Π― ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΡΠ΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π΄ΠΎΠΏΡΡΡΠΈΡΡ ΡΡ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΡ, ΡΠ°Π½Ρ Π΅Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΡ Π±ΡΠ΄Π΅Ρ ΡΡΡΡ-ΡΡΡΡ Π²ΡΡΠ΅:
ΠΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ
ΠΡΡ ΡΡΠΎΡ ΡΠ°Π·Π΄Π΅Π» ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π½Π°Π·Π²Π°ΡΡ Β«ΡΡΠΎΡΡΡΡΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΠ°ΠΊΡΠΎΡΡ β ΡΡΠΎ ΠΏΠ»ΠΎΡ ΠΎΒ». Π― ΠΎΡΠ΅Π½Ρ Π½Π΅ Π»ΡΠ±Π»Ρ ΠΌΠ°ΠΊΡΠΎΡΡ ΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΈΠ·ΡΠ²Π°Ρ ΠΏΠΎΠΌΠ΅Π½ΡΡΠ΅ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ°ΠΊΡΠΎΡΡ Π·Π°ΡΡΡΠ΄Π½ΡΡΡ ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΏΡΠΎΠ²ΠΎΡΠΈΡΡΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ, ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°ΠΌ. ΠΠ°ΠΊ ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ ΠΈΠ· Π½Π΅Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ GCC, Π΅Π³ΠΎ Π°Π²ΡΠΎΡΡ ΠΎΡΠ΅Π½Ρ Π»ΡΠ±ΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ. Π― Π·Π°ΠΌΡΡΠ°Π»ΡΡ ΠΈΠ·ΡΡΠ°ΡΡ, Π²ΠΎ ΡΡΠΎ ΡΠ°ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΌΠ°ΠΊΡΠΎΡ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠΏΡΡΡΠΈΠ» Π½Π΅ΠΌΠ°Π»ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΡΠΈΠ·Π½Π°ΡΡΡ, Ρ ΠΈΠ½ΠΎΠ³Π΄Π° Π±ΡΠ²Π°Ρ Π»Π΅Π½ΠΈΠ². ΠΠΎ ΠΏΠ°ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ, Ρ Π²ΡΡ-ΡΠ°ΠΊΠΈ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡ.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° PVS-Studio: V595 The ‘odr_types_ptr’ pointer was utilized before it was verified against nullptr. Check lines: 2135, 2139. ipa-devirt.c 2135
ΠΠΈΠ΄ΠΈΡΠ΅ Π·Π΄Π΅ΡΡ ΠΎΡΠΈΠ±ΠΊΡ? ΠΡΠΌΠ°Ρ, Π½Π΅Ρ, ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΡΡΠ½ΠΎΡΡΠΈ Π½Π΅ Π²Π½ΠΎΡΠΈΡ. ΠΡΡ Π΄Π΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ odr_types β ΡΡΠΎ Π½Π΅ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° ΠΌΠ°ΠΊΡΠΎΡ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠ»ΠΈ ΡΠ°ΡΠΊΡΡΡΡ ΠΌΠ°ΠΊΡΠΎΡ ΠΈ ΡΠ±ΡΠ°ΡΡ Π²ΡΡ Π½Π΅ ΠΎΡΠ½ΠΎΡΡΡΠ΅Π΅ΡΡ ΠΊ Π΄Π΅Π»Ρ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
Π Π½Π°ΡΠ°Π»Π΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ, Π° ΠΏΠΎΡΠΎΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ. ΠΡΠΈΠ²Π΅Π΄ΡΡ ΡΡΠΎ ΠΊ Π±Π΅Π΄Π΅ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΈΠ»ΠΈ Π½Π΅Ρ, ΡΠΊΠ°Π·Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΡΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π΅Π½ nullptr. ΠΡΠ»ΠΈ ΡΠ°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, ΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΄Π°Π»ΠΈΡΡ Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π²Π²ΠΎΠ΄ΠΈΡΡ Π² Π·Π°Π±Π»ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π»ΡΠ΄Π΅ΠΉ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ ΠΊΠΎΠ΄ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΊΠΎΠ΄Π°. ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½ΡΠ»Π΅Π²ΡΠΌ, ΡΠΎ ΡΡΠΎ ΡΠ΅ΡΡΡΠ·Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ΅Π±ΡΠ΅Ρ Π΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ:
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° PVS-Studio: V595 The ‘list’ pointer was utilized before it was verified against nullptr. Check lines: 1627, 1629. sched-int.h 1627
Π§ΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΎΡΠΈΠ±ΠΊΡ, Π½Π°ΠΌ ΠΎΠΏΡΡΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ°:
Π Π°ΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΌΠ°ΠΊΡΠΎΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ:
Π ΡΠ΅ΠΉΡΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²ΠΎΡΠΊΠ»ΠΈΠΊΠ½ΡΡ: Β«Π‘ΡΠΎΠΏ, ΡΡΠΎΠΏ! ΠΠ΄Π΅ΡΡ Π½Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΡ Π²Π΅Π΄Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅Π½ ΠΊΠ»Π°ΡΡΠ°. ΠΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π·Π΄Π΅ΡΡ Π½Π΅Ρ. ΠΠ°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ΄ Π½Π΅ Π°ΠΊΠΊΡΡΠ°ΡΠ΅Π½, Π½ΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ Π·Π΄Π΅ΡΡ Π½Π΅Ρ!Β».
ΠΡΡ Π½Π΅ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ. ΠΠ΄Π΅ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π ΡΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π²Π΅Π·Π΅Π½ΠΈΠ΅. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΡΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ Π½Π΅Π»ΡΠ·Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΡΠ²ΠΈΠ΄Π΅Π² list->first, ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π°Π»ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ if (list). Π Π°Π· ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ->, Π·Π½Π°ΡΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π΅ ΡΠ°Π²Π΅Π½ nullptr. ΠΡΠ»ΠΈ ΡΡΠΎ ΡΠ°ΠΊ, ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π΅ Π½ΡΠΆΠ½ΠΎ.
Π― Π½Π°ΠΏΠΈΡΠ°Π» ΡΠ΅Π»ΡΡ ΡΡΠ°ΡΡΡ Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ: «Π Π°Π·ΡΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°Π½ΠΈΠ΅ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ». Π’Π°ΠΌ ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ. ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΠΏΠΎΡΠΈΡΡ, ΠΏΡΠΎΡΡ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΡΠΉ.
ΠΠΏΡΠΎΡΠ΅ΠΌ, ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½Π° ΠΈ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°. Π― Π΄ΠΎΠΏΡΡΠΊΠ°Ρ, ΡΡΠΎ ΠΌΠΎΠ³Ρ Π±ΡΡΡ Π²ΡΡ-ΡΠ°ΠΊΠΈ Π½Π΅ΠΏΡΠ°Π² ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π·Π΄Π΅ΡΡ Π½Π΅Ρ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ ΠΌΠ½Π΅ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΡΠΌΠΎΠ³ ΡΡΠΎ Π΄ΠΎΠΊΠ°Π·Π°ΡΡ. ΠΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΡΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² GCC, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΎΠ±ΡΠ°ΡΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΡ ΡΡΠ°ΡΡΡ. Π£ΠΆ ΠΎΠ½ΠΈ-ΡΠΎ ΡΠΎΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΊΠ°ΠΊ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠΉ, ΠΈΠ»ΠΈ Π½Π΅Ρ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π·ΡΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° PVS-Studio: V507 Pointer to local array ‘buf’ is stored outside the scope of this array. Such a pointer will become invalid. hsa-dump.c 704
Π‘ΡΡΠΎΠΊΠ° ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ Π±ΡΡΠ΅ΡΠ΅ buf. ΠΠ΄ΡΠ΅Ρ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ name ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π°Π»Π΅Π΅ Π² ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΈΠ±ΠΊΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΠΈΡΠΈ Π±ΡΡΠ΅ΡΠ° Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ name, ΡΠ°ΠΌ ΡΡΠΎΡ Π±ΡΡΠ΅Ρ Π±ΡΠ΄Π΅Ρ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ°Π·ΡΡΡΠ΅Π½Π½ΡΠΉ Π±ΡΡΠ΅Ρ Π½Π΅Π»ΡΠ·Ρ. Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΏΠΎΠ»Π½Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΠΎΡΡΠ΅ΠΊΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ β ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΏΡΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ.
Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΡΠΎΡ ΠΊΠΎΠ΄ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΈ Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ. Π Π°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎ ΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². Π ΡΠΎΠ³Π΄Π°, Ρ ΠΎΡΡ ΠΌΠ°ΡΡΠΈΠ², ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π½Π° ΡΡΠ΅ΠΊΠ΅, ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΠ°Π·ΡΡΡΠ΅Π½Π½ΡΠΌ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΡΡΠΎΠ³Π°ΡΡ, ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ. ΠΠΎΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΊΠΎΠ΅ Π²Π΅Π·Π΅Π½ΠΈΠ΅ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΡΡΡΡ ΠΈ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π» 10 Π»Π΅Ρ, Π²Π΄ΡΡΠ³, ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π΅ Π½Π° Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½Π΅ΠΉΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ² buf Π² ΡΠΎΠΉ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΡΡΠΎ ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ name:
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΡΠ»ΠΎΠ²ΠΈΡ
ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π²ΡΡΠ²ΠΈΠ» ΡΡΠ°ΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΡΠ°ΠΉΠ½Π΅ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ, Π° ΠΏΠΎΡΠΎΠΌ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π·Π°Π΄Π΅Π» Π½Π° Π±ΡΠ΄ΡΡΠ΅Π΅ ΠΈ ΠΏΠΎΠΊΠ° Π²ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎΡ ΡΡΠ°ΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° ΡΠ²Π½ΠΎ ΡΡΠΎΠΈΡ.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° PVS-Studio: V523 The ‘then’ statement is equivalent to the ‘else’ statement. tree-ssa-threadupdate.c 2596
ΠΡΠ»ΠΈ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠΉ, Ρ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π΅ Π΄ΠΎΠ³Π°Π΄ΡΠ²Π°ΡΡΡ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ. ΠΡΠΎ ΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ΠΎ Π±ΡΡΡ Π·Π½Π°ΠΊΠΎΠΌΡΠΌ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π²Π½Π΅ΡΡΠΈ ΠΏΡΠ°Π²ΠΊΡ.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° PVS-Studio: V590 Consider inspecting this expression. The expression is excessive or contains a misprint. gensupport.c 1640
ΠΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΡΡΠ»ΠΎΠ²ΠΈΠ΅: (alt mode == mode’ to the left and to the right of the ‘&&’ operator. expmed.c 2573
ΠΠ²Π° ΡΠ°Π·Π° ΠΏΠΎΠ΄ΡΡΠ΄ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ mode, Π½ΠΎ Π·Π°ΡΠΎ Π½Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ cost. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π°Π»ΠΈΡΡ, Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΡΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ cost. ΠΠ½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΡΠ΄ΠΈΡΡ, Π½ΠΎ ΠΊΠΎΠ΄ ΡΠ²Π½ΠΎ ΡΡΠΎΠΈΡ ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΡ.
ΠΡΠ±Π»ΠΈΠΊΠ°ΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠΉ
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ°ΡΡΠΊΠΈ ΠΊΠΎΠ΄Π°, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ, ΠΊΠ°ΠΆΠ΅ΡΡΡ, Π΄ΡΠ±Π»ΠΈΡΡΡΡΠ΅Π΅ΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π°Π»ΠΈΡΡ.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° PVS-Studio: V519 The ‘structures’ variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 842, 845. gengtype.c 845
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° PVS-Studio: V519 The ‘nargs’ variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 39951, 39952. i386.c 39952
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ°Π½Π½ΡΠΉ, ΡΠ΅ΠΌ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΡ Π΅ΡΡΡ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ°. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ steptype Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ 2 ΠΈΠ»ΠΈ 3 ΡΠ°Π·Π°. ΠΡΠΎ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° PVS-Studio: V519 The ‘steptype’ variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 5173, 5174. tree-ssa-loop-ivopts.c 5174
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π― ΡΠ°Π΄, ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π» ΡΡΡ ΡΡΠ°ΡΡΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠ½Π΅ Π΅ΡΡΡ ΡΡΠΎ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π²ΠΈΠ΄Π° Β«PVS-Studio Π½Π΅ Π½ΡΠΆΠ΅Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠ΅ ΡΠ΅ ΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π²ΡΠ΄Π°ΡΡ ΠΈ GCCΒ». ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, PVS-Studio ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΈ ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌ GCC. Π― Π½Π΅ ΠΎΡΡΠΈΡΠ°Ρ, ΡΡΠΎ Π² GCC ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΎΡΠ»ΠΈΡΠ½ΡΠ΅ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ. ΠΡΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΠΏΡΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΡΠ²Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² ΠΊΠΎΠ΄Π΅. ΠΠΎ PVS-Studio β ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈ Π±ΡΡΡΡΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠΈΠΉΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π° ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΠΎΠ½ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Π»ΡΡΡΠ΅ Π²ΡΡΠ²Π»ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅, ΡΠ΅ΠΌ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ.
ΠΡΠΈΠ³Π»Π°ΡΠ°Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΠΌΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΠΎΡΠΊΡΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΠΏΠΎΡΠ΅ΡΠΈΠ² ΡΡΠΎΡ ΡΠ°Π·Π΄Π΅Π» Π½Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ°. Π ΡΠ°ΠΊΠΆΠ΅, ΡΠ΅ΠΌ, ΠΊΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Twitter, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π·Π° ΠΌΠ½ΠΎΠΉ @Code_Analysis. Π― ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΈ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ C ΠΈ C++, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Ρ ΠΎ Π½ΠΎΠ²ΡΡ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡΡ Π½Π°ΡΠ΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°.
ΠΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ΠΉ Ρ Π°Π½Π³Π»ΠΎΡΠ·ΡΡΠ½ΠΎΠΉ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΠ΅ΠΉ, ΡΠΎ ΠΏΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄: Andrey karpov. Bugs found in GCC with the help of PVS-Studio.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π² Π‘++: ΠΏΡΠΈΠ½ΡΡΡ Π½Π΅Π»ΡΠ·Ρ ΠΎΡΠΊΠ°Π·Π°ΡΡ
ΠΠ°ΡΠ΅Π» Ρ Π½Π°Ρ Π² Cloud4Y ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π² ΠΎΠ±Π»Π°ΠΊΠ΅ ΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ΠΏΡΠ°Π²Ρ ΡΡΠΈΡΠ°ΡΡ ΡΠ°ΠΌΡΠΌ Β«ΠΎΠ±Π»Π°ΡΠ½ΡΠΌΒ». ΠΠΎΠ»Π³ΠΎ Π»ΠΈ ΠΊΠΎΡΡΠΎΡΠΊΠΎ Π»ΠΈ, Π΄ΠΎΡΠ»ΠΈ Π΄ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΊΠΎΠΏΠΌΠΈΠ»ΡΡΠΎΡΠΎΠ² β ΠΎ ΠΈΡ Π΄Π²ΠΎΡΠΊΠΎΠΉ Π½Π°ΡΡΡΠ΅: ΠΈ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π½Π΅Π»ΡΠ·Ρ, ΠΈ ΠΎΠ±ΡΠ°ΡΠ°ΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ β ΡΠΌΠΎΠΌ ΡΡΠΎΠ½ΡΡΡΡΡ Π½Π΅Π΄ΠΎΠ»Π³ΠΎ. Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ Π²Π°ΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ Π³ΡΡΠ±ΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡ Π½Π΅ΡΠ²Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΡ ΡΠ°ΡΡΠΎ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΎΠ± ΡΡΠ°ΡΡΠΊΠ°Ρ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈΠ»ΠΈ ΠΏΠ»ΠΎΡ ΠΎΠΉ ΡΡΠΈΠ»Ρ. ΠΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠΉΡΠ΅ ΠΈΡ .
ΠΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΡΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π½Π΅ ΡΠ°Π·Π΄ΡΠ°ΠΆΠ°ΡΡ; ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅, ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π΄Π»Ρ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡΠ½ΠΎ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π±Π°Π³ΠΎΠ².
ΠΠΎ Π±ΡΠ΄ΡΡΠ΅ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΡΡΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ». ΠΠ½ΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΌΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΈ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΆΠ΅, Π²ΠΎ ΠΈΠΌΡ Π₯Π°Π±ΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ? ΠΠ°ΠΊ ΠΎΡΠ»ΠΈΡΠΈΡΡ Π΅Π³ΠΎ ΠΎΡ ΡΠΎΡΠ΅Π½ Π΄ΡΡΠ³ΠΈΡ
, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΡΡ
ΠΊΠΎΠ΄ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½? ΠΠ΅ΡΠΆΠ΅Π»ΠΈ Π½ΡΠΆΠ½ΠΎ ΡΡΠ°ΡΠΈΡΡ ΡΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΈΡ
Π²ΡΠ΅? ΠΡΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
ΠΡΠΈΠΌΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ Β«Π±Π΅Π· ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉΒ»
ΠΡΠ»ΠΈ ΡΠΆ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ΅ΡΡΠ½ΠΎ, ΡΠΎ Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π΅ Π²Π΅ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° β ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ ΠΈΠ»ΠΈ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ Π½ΠΈΡ . ΠΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ β Π·Π½Π°ΡΠΈΡ Π²ΡΠ±ΡΠΎΡΠΈΡΡ Π² ΠΌΡΡΠΎΡΠ½ΠΎΠ΅ Π²Π΅Π΄ΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Π±Π°Π³ΠΈ. Π‘ΠΎΠ³Π»Π°ΡΠΈΡΠ΅ΡΡ Π»ΠΈ Π²Ρ ΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΊΠ²ΠΎΠ·Ρ ΠΏΠ°Π»ΡΡΡ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ΅ΡΡΠ΅Π·Π½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ? ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅, Π½Π΅Ρ.
ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ
Π₯ΠΎΡΡ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°ΠΌ ΠΈ Ρ ΠΎΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠΌΠΎΠ»ΡΠ°Π» ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΈ, Π»ΡΡΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄. ΠΡΠ»ΠΈ ΠΊΠΎΠ΄ Π½Π΅ ΠΏΠΎΠ½ΡΡΠ΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ, ΡΠΎ Π΅ΡΡΡ Π²ΡΠ΅ ΡΠ°Π½ΡΡ, ΡΡΠΎ ΠΎΠ½ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ½ΡΡΠ΅Π½ ΠΈ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΡ ΡΠΎΠΆΠ΅.
ΠΡΠΎΡΡΠ½ΠΈΡΡ ΡΠ²ΠΎΠΈ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅ ΡΠ°ΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π·Π°ΠΌΠΎΠ»ΡΠ°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ Π΄Π°ΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ, ΠΊΠ°ΠΊ ΡΠ΅ΡΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ°ΡΡΠΎ ΠΏΠΎΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠΈ Π² ΡΡΠ»ΠΎΠ²Π½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅:
ΠΠ»Ρ Clang ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
ΠΡΠΎΡΠΎΠΉ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Π»Π΅ΠΆΠΈΡ Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ: ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ a = b, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΈΠΌΠ΅Π»ΠΈ Π² Π²ΠΈΠ΄Ρ a == b.
Π ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡ, ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π½Π°ΠΌΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΡΠ°Π½Π½ΠΎ Π² ΡΡΠΎΠΌ ΡΡΠ°ΡΡΠΊΠ΅ ΠΊΠΎΠ΄Π°, CLANG ΡΡΠ»ΡΠΆΠ»ΠΈΠ²ΠΎ ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠ³Π°Π΄Π°ΡΡ, ΡΡΠΎ ΠΆΠ΅ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΠΈΠΌΠ΅ΡΡ Π² Π²ΠΈΠ΄Ρ.
ΠΠ΅ΡΠ²ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΏΡΠΎΡΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ Π½Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ°ΠΊ ΠΈ Π±ΡΠ»ΠΎ Π·Π°Π΄ΡΠΌΠ°Π½ΠΎ. Π£ GCC Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ, Π½ΠΎ Π±Π΅Π· ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ:
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΡΠ΄Π°ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠ΅ CLANG, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠ²ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΎ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»ΡΡΡΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΠΉΡΠΈ Π² ΠΊΠΎΠ΄Π΅ Π±Π°Π³, ΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ Π±Ρ, ΠΏΡΠΈΠΌΠΈ ΠΌΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅, ΡΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ.
ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΠ»ΠΎ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΎ, ΠΏΡΠΈΠ½ΡΡΠΈΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ.
Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΈΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅. ΠΠΎΡΠ°Π·Π΄ΠΎ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ, ΡΠΎ Π΅ΡΡΡ, ΠΏΠΎ ΡΡΡΠΈ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΡΠΈΠ½ΡΠΈΠΏ ΠΠ΄ΠΈΠ½ΠΎΠΉ ΠΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ Π½Π° ΠΏΠΎΡΡΡΠΎΡΠ½ΠΎΠΌ Π±Π°Π·ΠΈΡΠ΅:
ΠΠ΅ ΠΈΡΠΏΡΠ°Π²Π»ΡΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π²Π½ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π΄ΡΠΌΠ°Π½Π½ΠΎ.
Π‘ΠΊΠ°ΠΆΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ, ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π²Π°ΠΆΠ½Ρ Π΄Π»Ρ Π²Π°Ρ
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ², ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΠΈ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ½ΡΡΠ΅Π½ Π΄Π°ΠΆΠ΅ Π±Π΅Π΄Π½ΡΠ³Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ β Π»ΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π²Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ, Π° ΠΊΠ°ΠΊΠΈΠ΅ β Π½Π΅Ρ.
Π€Π»Π°Π³ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ Π½Π°ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ±ΠΎΡΠ° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ. ΠΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π³ΡΡΠΏΠΏΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°Π·Π½Π°ΡΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ. ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ IDE. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ β ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π°Ρ Π±ΠΈΠ»Π΄ ΡΠΊΡΠΈΠΏΡ β Π³Π΄Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ.
ΠΠ°ΠΊΠΈΠ΅ ΡΠ»Π°Π³ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ? ΠΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°Π·Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΡΠΌΠΈΡΠΈΡΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠΌΠΈ, Π° Π±ΡΠ΅Π΄ΠΎΠ²ΡΠΌΠΈ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΏΠ΅Π΄Π°Π½ΡΠΈΡΠ½ΡΠΌΠΈ Π½Π° Π²Π°Ρ Π²ΠΊΡΡ ΠΈΠ»ΠΈ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΡΠΈΠ»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π°, Ρ ΠΎΡΡ Π½Π°ΠΌ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ Π½Π΅ Π²ΡΡΡΠ΅ΡΠ°Π»ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΠΏΠΎΠ΄ ΡΠΎΠ±ΠΎΠΉ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΉ. (ΠΠ° Π½Π°Ρ Π²Π·Π³Π»ΡΠ΄ Π²ΠΎΠΎΠ±ΡΠ΅ Π»ΡΡΡΠ΅ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ Π²Π°ΠΆΠ½ΠΎΠ΅).
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ»Π°Π³ΠΈ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ β ΡΡΠΎ Wall, Wpedantic, Wextra (ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ»Π°Π³ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΊΠ°ΡΠ°ΡΡΠΈΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ W).
ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ Β«Π±Π΅Π· ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉΒ» Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π²Ρ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΠΎΡΠ½ΠΈ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΡΡΡΡΡΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π²ΡΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ. ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ. ΠΠ°ΡΠΈΠΊΡΠΈΡΡΠΉΡΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΆΠ΅ΡΡΠΊΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π½Π°Π±Π΅ΡΠΈΡΠ΅ ΡΠ²ΠΎΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ.
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ°ΠΌ Π»Π΅Π½ΠΈ, ΠΈΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ, Π²ΡΡΡΡΠΏΠ°ΡΡΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ² ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Β«Π±Π΅Π· ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉΒ», ΡΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΈΡ ΡΠΎΠ²ΡΠ΅ΠΌ Π±ΡΠ΄Π΅Ρ Π½Π΅ ΡΠ°ΠΊ ΡΠΎ ΠΏΡΠΎΡΡΠΎ. Π£ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΊΠΎΠ΄, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ ΠΎΡΠΈΠ±ΠΊΠ°, ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΈ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΡΡΠ° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΡΠ°ΡΡΠΎΡΠ΅ΡΡΡ, ΠΎΠ΄Π½ΠΎ Π·Π° Π΄ΡΡΠ³ΠΈΠΌ.
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Pragma
ΠΡΠ²Π°ΡΡ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ #pragma.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΡΠ»ΡΠΆΠ»ΠΈΠ²ΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π» Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ. ΠΡΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ Π±ΡΡΡ Π²Π΅ΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π±ΡΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡ ΠΊ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ. Π§ΡΠΎΠ±Ρ ΠΊΠΎΠ΄ DSL ΡΠΈΡΠ°Π»ΡΡ, Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π°Π³Π»ΡΡΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π½Π΅ ΡΡΠΎΠ³Π°Ρ ΠΊΠΎΠ΄, Π·Π΄Π΅ΡΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ #pragma Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ Ρ ΠΏΠΎΡΡΠ½ΡΡΡΠΈΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ.
ΠΠΌΠ΅ΡΡΠΎ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΡΠΎΠΎΠ±ΡΠΈΠ² Π΅ΠΌΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Ρ, Π° ΠΊΠ°ΠΊΠΈΠ΅ β Π½Π΅Ρ; ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈΠ»ΠΈ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ, Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ #pragmas. Π‘ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ Π±ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΡΡΠΎΠ³ΠΈΠΌΠΈ, Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ #pragmas ΠΈ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΎΡ Π²Π°ΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
ΠΠ½ΠΎΠ³Π΄Π° Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ. Π’ΠΎΠ³Π΄Π° ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ shut up.
- Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π±Π»ΠΎΠΊΠ°Π΄Π° ΠΏΡΠΈ Π±ΠΎΠ»ΠΈ Π² ΡΠΏΠΈΠ½Π΅
- Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅ΠΊΠ°ΡΠΈΡ Ρ ΠΌΡΠΆΡΠΈΠ½