IWYU (เจœเจพเจ‚ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹-เจœเฉ‹-เจคเฉเจธเฉ€เจ‚-เจตเจฐเจคเจฆเฉ‡ เจนเฉ‹) เจœเจพเจฐเฉ€ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฌเฉ‡เจฒเฉ‹เฉœเฉ‡ เจฒเฉฑเจญเจฃ เจ…เจคเฉ‡ เจคเฉเจนเจพเจกเฉ‡ C/C++ เจ•เฉ‹เจก เจตเจฟเฉฑเจš # เจธเจผเจพเจฎเจฒ เจจเจพ เจนเฉ‹เจฃ เจฆเจพ เจธเฉเจเจพเจ… เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

"เจœเฉ‹ เจคเฉเจธเฉ€เจ‚ เจตเจฐเจคเจฆเฉ‡ เจนเฉ‹ เจ‰เจธ เจจเฉ‚เฉฐ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹" เจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ foo.cc เจตเจฟเฉฑเจš เจตเจฐเจคเฉ‡ เจ—เจ เจนเจฐเฉ‡เจ• เจšเจฟเฉฐเจจเฉเจน (เจ•เจฟเจธเจฎ, เจตเฉ‡เจฐเฉ€เจเจฌเจฒ, เจซเฉฐเจ•เจธเจผเจจ, เจœเจพเจ‚ เจฎเฉˆเจ•เจฐเฉ‹) เจฒเจˆ, foo.cc เจœเจพเจ‚ foo.h เจตเจฟเฉฑเจš เจ‡เฉฑเจ• .h เจซเจพเจˆเจฒ เจธเจผเจพเจฎเจฒ เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ เจœเฉ‹ เจ‰เจธ เจšเจฟเฉฐเจจเฉเจน เจฆเฉ€ เจ˜เฉ‹เจธเจผเจฃเจพ เจจเฉ‚เฉฐ เจจเจฟเจฐเจฏเจพเจค เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค Include-what-you-use เจŸเฉ‚เจฒ เจ‡เจธ เจชเจนเฉเฉฐเจš เจฆเฉ€เจ†เจ‚ เจ‰เจฒเฉฐเจ˜เจฃเจพเจตเจพเจ‚ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃ เจ…เจคเฉ‡ เจธเฉเจงเจพเจฐ เจฒเจˆ เจธเจฟเจซเจผเจพเจฐเจธเจผเจพเจ‚ เจ•เจฐเจจ เจฒเจˆ #include เจธเจฐเฉ‹เจค เจซเจพเจˆเจฒเจพเจ‚ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจนเฉˆเฅค เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ•เจฒเฉˆเจ‚เจ— เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจฐเฉ€เจฒเฉ€เจœเจผ เจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฒเฉˆเจ‚เจ— เจฆเฉ‡ เจจเจตเฉ‡เจ‚ เจธเฉฐเจธเจ•เจฐเจฃ เจจเจพเจฒ เจ…เจจเฉเจ•เฉ‚เจฒเจคเจพเฅค

เจธเจผเจพเจฎเจฟเจฒ-เจ•เฉ€-เจคเฉเจนเจพเจจเฉ‚เฉฐ-เจตเจฐเจคเจฃ เจฆเจพ เจฎเฉเฉฑเจ– เจ‰เจฆเฉ‡เจธเจผ เจฌเฉ‡เจฒเฉ‹เฉœเฉ‡ #เจธเจผเจพเจฎเจฒ เจจเฉ‚เฉฐ เจนเจŸเจพเจ‰เจฃเจพ เจนเฉˆเฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจน เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจ•เจฟ เจฆเจฟเฉฑเจคเฉ€ เจ—เจˆ เจซเจพเจˆเจฒ (.cc เจ…เจคเฉ‡ .h เจฆเฉ‹เจตเจพเจ‚ เจฒเจˆ) เจตเจฟเฉฑเจš เจ•เจฟเจนเฉœเฉ‡ #เจธเจผเจพเจฎเจฒ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ…เจคเฉ‡, เจœเฉ‡ เจธเฉฐเจญเจต เจนเฉ‹เจตเฉ‡, เจคเจพเจ‚ #เจธเจผเจพเจฎเจฒ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเฉ‚เจฐเจต-เจ˜เฉ‹เจธเจผเจฃเจพ เจจเจพเจฒ เจฌเจฆเจฒเฉ‹เฅค

เจตเฉฑเจกเฉ€เจ†เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚

  • เจ•เจฒเฉˆเจ‚เจ— 17 เจฆเฉ‡ เจ…เจจเฉเจ•เฉ‚เจฒเฅค
  • เจ•เจฟเจธเจฎ เจ‰เจชเจจเจพเจฎ (เจŸเจพเจˆเจชเจกเฉ‡เจซ เจ…เจคเฉ‡ เจตเจฐเจคเฉ‹เจ‚) เจฆเจพ เจธเฉเจงเจพเจฐเจฟเจ† เจ—เจฟเจ† เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃเฅค
  • เจจเฉ‡เจฎเจธเจชเฉ‡เจธ เจ‰เจชเจจเจพเจฎเจพเจ‚ (เจจเฉ‡เจฎเจธเจชเฉ‡เจธ xyz = foobar) เจฆเจพ เจธเฉเจงเจพเจฐเจฟเจ† เจ—เจฟเจ† เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃเฅค
  • เจตเจฟเจธเจคเฉเจฐเจฟเจค เจซเจพเจฐเจตเจฐเจก เจ˜เฉ‹เจธเจผเจฃเจพเจตเจพเจ‚ (typedef struct Foo Bar;) เจฒเจˆ เจธเฉเจงเจพเจฐเจฟเจ† เจธเจฎเจฐเจฅเจจเฅค
  • "เจ†เจŸเฉ‹เจ•เจพเจธเจŸ" เจ…เจคเฉ‡ เจซเฉฐเจ•เจธเจผเจจ เจฐเจฟเจŸเจฐเจจ เจ•เจฟเจธเจฎเจพเจ‚ เจฆเฉ‡ เจชเฉเจฐเจฌเฉฐเจงเจจ เจตเจฟเฉฑเจš เจธเฉเจงเจพเจฐ เจ•เจฐเฉ‹, เจ–เจพเจธ เจ•เจฐเจ•เฉ‡ เจœเจฆเฉ‹เจ‚ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸ เจ•เจฟเจธเจฎเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เฅค
  • เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจชเฉเจฐเฉˆเจ—เจฎเจพ IWYU เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ: เจ‡เฉฑเจ• เจธเจฟเจฐเจฒเฉ‡เจ– เจจเฉ‚เฉฐ เจจเจฟเจธเจผเจพเจจเจฌเฉฑเจง เจ•เจฐเจจ เจฒเจˆ เจนเจฎเฉ‡เจธเจผเจพ_เจ•เฉ€เจช เจ•เจฐเฉ‹ เจ•เจฟ เจ‡เจธเจจเฉ‚เฉฐ เจนเจฎเฉ‡เจธเจผเจพ เจฐเฉฑเจ–เจฟเจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจตเฉ€ เจ‡เจน เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค
  • เจœเฉ‡เจ•เจฐ libc++ เจเจ•เจŸเจฟเจต เจธเจŸเฉˆเจ‚เจกเจฐเจก เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจนเฉˆ เจคเจพเจ‚ เจฌเจฟเจฒเจŸเจฟเฉฐเจธ libc++ เจฒเจˆ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ•เจฒเฉ€ เจฎเฉˆเจชเจฟเฉฐเจ— เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹เฅค
  • libc++ เจ…เจคเฉ‡ posix เจธเจฟเจฐเจฒเฉ‡เจ–เจพเจ‚ เจฒเจˆ เจธเฉเจงเจพเจฐเฉ€ เจฎเฉˆเจชเจฟเฉฐเจ—เฅค

เจธเจฐเฉ‹เจค: linux.org.ru

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹