C ++ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдФрд░ рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХрд┐рдВрдЧ

рд╕рднреА рдХреЛ рд╢реБрдн рджрд┐рди!

рд╣рдо рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдкрд╛рдареНрдпрдХреНрд░рдо "рд╕реА ++ рдбреЗрд╡рд▓рдкрд░" рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╣рдорд╛рд░реЗ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреАред

рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рдЖрдВрддрд░рд┐рдХ рдФрд░ рдмрд╛рд╣рд░реА рд╕рдВрдЪрд╛рд░ рдХреА рд╢рд░реНрддреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ? рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдмрд╛рд╣рд░реА рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдХреБрдЫ рд╕реНрдереИрддрд┐рдХ рдХреА рдШреЛрд╖рдгрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ? рдлрд┐рд░ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЗ рд▓рд┐рдП рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ

рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдИ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдИ (.c / .cpp) рдФрд░ рдЙрд╕рдХреА рд╕рднреА рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реЗрдВ (.h / .hpp) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрджрд┐ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдлрдВрдХреНрд╢рди рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рдпреВрдирд┐рдЯ рдХреЗ рдЕрдВрджрд░ рдЗрдВрдЯрд░рдирд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╣реИ, рддреЛ рдпрд╣ рдЪрд┐рдиреНрд╣ рд▓рд┐рдВрдХрд░ рдХреЛ рдХреЗрд╡рд▓ рдЗрд╕ рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рдпреВрдирд┐рдЯ рдХреЗ рдЕрдВрджрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХ рд╣реИ, рддреЛ рд▓рд┐рдВрдХрд░ рдЕрдиреНрдп рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ рджреЗрдЦ рд╕рдХреЗрдЧрд╛ред рд╡реИрд╢реНрд╡рд┐рдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рд╕реНрдЯреЗрдЯрд┐рдХ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХреИрд░реЗрдХреНрдЯрд░ рдХреЛ рдЖрдВрддрд░рд┐рдХ рдмрдВрдзрди рдорд┐рд▓рддрд╛ рд╣реИред рдПрдХреНрд╕рдЯрд░реНрдирд▓ рдХреАрд╡рд░реНрдб рдмрд╛рд╣рд░реА рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рджреЗрддрд╛ рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рджреЗрддрд╛ рд╣реИ:

  • рдЧреИрд░-рдХреЙрд╕реНрдЯ рдЧреНрд▓реЛрдмрд▓ рд╡реИрд░рд┐рдПрдмрд▓ - рдмрд╛рд╣рд░реА рдмрдВрдзрди;
  • рдХрд╛рд╕реНрдЯ рдЧреНрд▓реЛрдмрд▓ рд╡реИрд░рд┐рдПрдмрд▓ - рдЖрдВрддрд░рд┐рдХ рдмрд╛рдзреНрдпрдХрд╛рд░реА;
  • рдХрд╛рд░реНрдп - рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХрд┐рдВрдЧред



рдореВрд▓ рдмрд╛рддреЗрдВ

рдкрд╣рд▓реЗ, рдЖрдЗрдП рдмрдВрдзрди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рджреЛ рд╕рд░рд▓ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВред

  • рдПрдХ рдШреЛрд╖рдгрд╛ рдФрд░ рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░;
  • рдкреНрд░рд╕рд╛рд░рдг рдЗрдХрд╛рдЗрдпрд╛рдБред

рдирд╛рдореЛрдВ рдкрд░ рднреА рдзреНрдпрд╛рди рджреЗрдВ: рд╣рдо "рдкреНрд░рддреАрдХ" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдЬрдм рдпрд╣ рдХрд┐рд╕реА рднреА "рдХреЛрдб рдЗрдХрд╛рдИ" рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдХрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд░ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди (рдпрд╛ рдХрдХреНрд╖рд╛рдУрдВ / рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рд╣рдо рдЙрди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ)ред

рдШреЛрд╖рдгрд╛ рд╡реА.рдПрд╕. рдкрд░рд┐рднрд╛рд╖рд╛

рд╣рдо рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдПрдХ рдШреЛрд╖рдгрд╛ рдФрд░ рдПрдХ рдкреНрд░рддреАрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВ: рдПрдХ рдШреЛрд╖рдгрд╛ (рдпрд╛ рдШреЛрд╖рдгрд╛) рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рддреАрдХ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХрд▓рдХ рдХреЛ рдмрддрд╛рддреА рд╣реИ, рдФрд░ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕ рдкреНрд░рддреАрдХ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдЯреАрдХ рд╕реНрдореГрддрд┐ рдкрддреЗ рдпрд╛ рдкреНрд░рддреАрдХ рднрдВрдбрд╛рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдкрд░рд┐рднрд╛рд╖рд╛ рд╕рдВрдХрд▓рдХ рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдХреНрдпрд╛ рдирд┐рд╣рд┐рдд рд╣реИ рдпрд╛ рдЪрд░ рдХреЛ рдХрд┐рддрдиреА рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рдШреЛрд╖рдгрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдХрдХреНрд╖рд╛ рдХреЗ рдбреЗрдЯрд╛ рддрддреНрд╡ рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХ рдпрд╛ рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ (рдЬреЛ рдПрдХ рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдПрдХ рд╕реВрдЪрдХ рдирд╣реАрдВ рд╣реИ)ред рдЙрд╕реА рд╕рдордп, рдПрдХ рдШреЛрд╖рд┐рдд (рд▓реЗрдХрд┐рди рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд) рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реВрдЪрдХ рдХреЛ рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 64-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ 8 рдмрд╛рдЗрдЯреНрд╕), рднрд▓реЗ рд╣реА рд╡рд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реЛред рдЗрд╕ рд╕реВрдЪрдХ рджреНрд╡рд╛рд░рд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ (рдЪрд╛рд╣реЗ рд╡рд╣ рдореВрд▓реНрдп, рд╕рдВрджрд░реНрдн рдпрд╛ рд╕реВрдЪрдХ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ) рдФрд░ рд╡рд╛рдкрд╕реА рдкреНрд░рдХрд╛рд░ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ)ред рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдХрд╛рд░реНрдпреЛрдВ

рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИред

int f(); //  int f() { return 42; } //  

рдЪрд░

рдЪрд░ рдХреЗ рд╕рд╛рде, рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред рдШреЛрд╖рдгрд╛ рдФрд░ рдкрд░рд┐рднрд╛рд╖рд╛ рдЖрдорддреМрд░ рдкрд░ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ:

 int x; 

рди рдХреЗрд╡рд▓ x рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рднреА рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рдХрд╛рд░рдг рд╣реИред (C ++ рдореЗрдВ, Java рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ (рдЬреИрд╕реЗ int) рдХрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдорд╛рди рдХреЛ 0 рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, x рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдПрдбреНрд░реЗрд╕ рдореЗрдВ рдкрдбрд╝реЗ рдХрд┐рд╕реА рдХрдЪрд░реЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛)ред

рд▓реЗрдХрд┐рди рдЖрдк extern рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдШреЛрд╖рдгрд╛ рдФрд░ рдЙрд╕рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 extern int x; //  int x = 42; //  

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм рдРрд▓рд╛рди рдХреЗ рд▓рд┐рдП extern рдХреЛ рд╢реБрд░реВ рдФрд░ рдЬреЛрдбрд╝рдирд╛, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ extern рдХреАрд╡рд░реНрдб рдмреЗрдХрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

 extern int x = 5; //   ,   int x = 5; 

рд╡рд┐рдЬреНрдЮрд╛рдкрди рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди

рд╕реА ++ рдореЗрдВ, рдПрдХ рдЪрд░рд┐рддреНрд░ рдХреЛ рдкреВрд░реНрд╡-рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХ рдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рдирд╛рдо рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЪрд░рд┐рддреНрд░ рдХреА рдкреВрд░реА рдкрд░рд┐рднрд╛рд╖рд╛ (рдЖрдорддреМрд░ рдкрд░ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓) рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдкрд░рд┐рднрд╛рд╖рд╛ рд╡рд╛рд▓реЗ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВред рдореБрдЦреНрдп рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдмрджрд▓рддреЗ рд╕рдордп, рдЬрд┐рд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдо рдЗрд╕ рдкреНрд░рддреАрдХ рдХреЛ рдкреВрд░реНрд╡ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕реЗ рдкреБрди: рд╕рдВрдХрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ (рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдЕрдиреНрдп рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ)ред

рдЙрджрд╛рд╣рд░рдг

рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ f рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди (рдЬрд┐рд╕реЗ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рд╣реИ, рдЬреЛ рд╡реИрд▓реНрдпреВ рдХреЗ Class рд╕реЗ рдЯрд╛рдЗрдк Class рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЗрддрд╛ рд╣реИ:

 // file.hpp void f(Class object); 

рддреБрд░рдВрдд Class рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ - рднреЛрд▓реАред рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рд╣рдордиреЗ рд╕рд┐рд░реНрдл f рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ f , рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ Class рдШреЛрд╖рдгрд╛ рджреЗрдирд╛ рдХрд╛рдлреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрдВрдкрд╛рдЗрд▓рд░ рдЕрдкрдиреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рджреНрд╡рд╛рд░рд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╣рдЪрд╛рди рд╕рдХреЗрдЧрд╛, рдФрд░ рд╣рдо рдлрд╛рдЗрд▓ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХреЗрдВрдЧреЗред

 // file.hpp class Class; void f(Class object); 

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ file.hpp 100 рдЕрдиреНрдп рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реИред рдФрд░ рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдХреНрд▓рд╛рд╕ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк class.hpp рдХреЛ file.hpp, file.hpp рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдореМрдЬреВрдж рд╕рднреА 100 рдлрд╛рдЗрд▓реЛрдВ рдХреЛ recompiled рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХрдХреНрд╖рд╛ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдкреБрди: рдкреНрд░рд╛рдкреНрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реА рдПрдХрдорд╛рддреНрд░ рдлрд╛рдЗрд▓реЗрдВ class.hpp рдФрд░ file.hpp рд╣реЛрдВрдЧреА (рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдПрдл рд╡рд╣рд╛рдБ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ)ред

рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡реГрддреНрддрд┐

рдПрдХ рдШреЛрд╖рдгрд╛ рдФрд░ рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдмреАрдЪ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдкреНрд░рддреАрдХ рдХреЛ рдХрдИ рдмрд╛рд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЖрдк рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рд╡рд░реНрдЧ рдХреЛ рдЬрд┐рддрдиреА рдмрд╛рд░ рдЪрд╛рд╣реЗрдВ рдЙрддрдиреА рдмрд╛рд░ рдкреВрд░реНрд╡-рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕реЗ рдирд┐рдпрдо рдХреА рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред C ++ рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ:

 int f(); int f(); int f(); int f(); int f(); int f(); int f() { return 5; } 

рдФрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

 int f() { return 6; } int f() { return 9; } 

рдкреНрд░рд╕рд╛рд░рдг рдЗрдХрд╛рдЗрдпрд╛рдБ

рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЖрдорддреМрд░ рдкрд░ рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реЛрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓рдХ рдирд╣реАрдВ - рд╡реЗ рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдЗрдпреЛрдВ (рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд▓рдШреБ - рдЯреАрдпреВ) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдХрднреА-рдХрднреА рд╕рдВрдХрд▓рди рдЗрдХрд╛рдЗрдпрд╛рдБ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдЗрдХрд╛рдИ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ - рдЗрд╕рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж рд╕рдВрдХрд▓рдХ рдХреЛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЛрдИ рднреА рдлрд╝рд╛рдЗрд▓ред рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореИрдХреНрд░реЛ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ #ifndef рдФрд░ #ifndef рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рднреА #include рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдХреЙрдкреА-рдкреЗрд╕реНрдЯред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╛рдЗрд▓реЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:

header.hpp:

 #ifndef HEADER_HPP #define HEADER_HPP #define VALUE 5 #ifndef VALUE struct Foo { private: int ryan; }; #endif int strlen(const char* string); #endif /* HEADER_HPP */ 

program.cpp:

 #include "header.hpp" int strlen(const char* string) { int length = 0; while(string[length]) ++length; return length + VALUE; } 

рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рдореНрди рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдИ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рд╕рдВрдХрд▓рдХ рдХреЗ рдкрд╛рд╕ рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 int strlen(const char* string); int strlen(const char* string) { int length = 0; while(string[length]) ++length; return length + 5; } 

рд╕рдВрдЪрд╛рд░

рдореВрд▓ рдмрд╛рддреЗрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рд╕рдВрдмрдВрдз рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдВрдЪрд╛рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рд▓рд┐рдВрдХрд░ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдгреЛрдВ рдХреА рджреГрд╢реНрдпрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рдВрдЪрд╛рд░ рдмрд╛рд╣рд░реА рдпрд╛ рдЖрдВрддрд░рд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдмрд╛рд╣рд░реА рд╕рдВрдЪрд╛рд░

рдЬрдм рдПрдХ рдкреНрд░рддреАрдХ (рдЪрд░ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди) рдХрд╛ рдмрд╛рд╣рд░реА рд╕рдВрдмрдВрдз рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдВрдХрд░реНрд╕ рдХреЛ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, "рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░" рджреГрд╢реНрдпрдорд╛рди, рд╕рднреА рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рднред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкреНрд░рддреАрдХ рдХреЛ рдПрдХ рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдИ рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрдЧрд╣ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрдорддреМрд░ рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд╛рдЗрд▓ (.c / .cpp) рдореЗрдВ, рддрд╛рдХрд┐ рдЗрд╕рдХреА рдХреЗрд╡рд▓ рдПрдХ рджреГрд╢реНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реЛред рдпрджрд┐ рдЖрдк рдПрдХ рд╕рд╛рде рдкреНрд░рддреАрдХ рдХреЛ рдЙрд╕реА рд╕рдордп рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдкреНрд░рддреАрдХ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рдЖрдк рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд▓рд┐рдВрдХрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдИ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ - рдЖрдкрдХрд╛ рд▓рд┐рдВрдХрд░ рд░реЛ рдЬрд╛рдПрдЧрд╛ред

C рдФрд░ C ++ (рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ) рдореЗрдВ рдмрд╛рд╣рд░реА рдХреАрд╡рд░реНрдб рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЪрд░рд┐рддреНрд░ рдХрд╛ рдмрд╛рд╣рд░реА рд╕рдВрдмрдВрдз рд╣реИред

 extern int x; extern void f(const std::string& argument); 

рджреЛрдиреЛрдВ рдкрд╛рддреНрд░реЛрдВ рдХрд╛ рдмрд╛рд╣рд░реА рд╕рдВрдмрдВрдз рд╣реИред рдпрд╣ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ рдЧреНрд▓реЛрдмрд▓ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЖрдВрддрд░рд┐рдХ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╣реЛрддреА рд╣реИ, рдЧреИрд░-рдХреЙрд╕реНрдЯ рдЧреНрд▓реЛрдмрд▓ рд╡реИрд░рд┐рдПрдмрд▓реНрд╕ рдореЗрдВ рдмрд╛рд╣рд░реА рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрдВрдЯ x; - рдПрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдПрдХреНрд╕ ?, рд╕рд╣реА? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВред рдЗрдВрдЯ x; рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХреНрд╕ рдПрдХреНрд╕рдЯреНрд░реАрдо рдПрдХреНрд╕рдЯреНрд░реАрдо рдХреЗ рдЕрдиреБрд░реВрдк; (рдПрдХреНрд╕ / рдПрдХреНрд╕ рдХреЗ рдмрд╛рдж рд╕реЗ рд╕рдмрд╕реЗ рдЕрдкреНрд░рд┐рдп рдкрд╛рд░реНрд╕рд┐рдВрдЧ (рд╕рдмрд╕реЗ рдЕрдкреНрд░рд┐рдп рдкрд╛рд░реНрд╕рд┐рдВрдЧ) рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ / рдмреНрд░реИрдХреЗрдЯ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛); рди рдХреЗрд╡рд▓ рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХреНрд╕ рдХреЛ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХреНрд╕ рдХреЛ рдПрдХреНрд╕рдЯрд░реНрдирд▓ рди рдЬреЛрдбрд╝реЗрдВ; рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЙрддрдирд╛ рд╣реА рдмреБрд░рд╛ рд╣реИ:

 int x; //   ,   extern int x{}; //      . extern int x; //      ,   

рдЦрд░рд╛рдм рдЙрджрд╛рд╣рд░рдг

рдЪрд▓рд┐рдП file.hpp рдореЗрдВ рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди f рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 // file.hpp #ifndef FILE_HPP #define FILE_HPP extern int f(int x); /* ... */ int f(int) { return x + 1; } /* ... */ #endif /* FILE_HPP */ 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдпрд╣рд╛рдВ рдмрд╛рд╣рд░реА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдХрд╛рд░реНрдп рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрд╛рд╣рд░реА рд╣реИрдВред рдШреЛрд╖рдгрд╛ рдФрд░ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рддреЛ рдЪрд▓реЛ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ:

 // file.hpp #ifndef FILE_HPP #define FILE_HPP int f(int) { return x + 1; } #endif /* FILE_HPP */ 

рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╛ рд╢рд░рд╛рдм рдпрд╛ рднрд╛рд░реА рдкрджрд╛рд░реНрдереЛрдВ рдХреЗ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджрд╛рд▓рдЪреАрдиреА рд░реЛрд▓)ред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ: a.cpp рдФрд░ b.cpp, рджреЛрдиреЛрдВ file.hpp рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

 // a.cpp #include "file.hpp" /* ... */ 


 // b.cpp #include "file.hpp" /* ... */ 

рдЕрдм рд╕рдВрдХрд▓рдХ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рджреЗрдВ рдФрд░ рдКрдкрд░ рдХреА рджреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рджреЛ рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдЗрдпрд╛рдБ рдмрдирд╛рдПрдБ (рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ #include рд╢рд╛рдмреНрджрд┐рдХ рдЕрд░реНрде рд╣реИ рдХреЙрдкреА / рдкреЗрд╕реНрдЯ):

 // TU A, from a.cpp int f(int) { return x + 1; } /* ... */ 

 // TU B, from b.cpp int f(int) { return x + 1; } /* ... */ 

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рд▓рд┐рдВрдХрд░ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддрд╛ рд╣реИ (рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж рдмрдВрдзрди рд╣реЛрддрд╛ рд╣реИ)ред рд▓рд┐рдВрдХрд░ рдЪрд░рд┐рддреНрд░ f рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред рдЖрдЬ рд╡рд╣ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИ, рд╡рд╣ рджреЛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рдкрд╛рддрд╛ рд╣реИ! рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдИ рдП рдореЗрдВ рдПрдХ, рдмреА рдореЗрдВ рдЕрдиреНрдп рд▓рд┐рдВрдХрд░ рдЦреБрд╢реА рдХреЗ рд╕рд╛рде рдЬрдорд╛ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдмрддрд╛рддрд╛ рд╣реИ:

 duplicate symbol __Z1fv in: /path/to/ao /path/to/bo 

рд▓рд┐рдВрдХ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдПрдХ f рд╡рд░реНрдг рдХреЗ рд▓рд┐рдП рджреЛ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рдорд┐рд▓рддреА рд╣реИрдВред рдЪреВрдВрдХрд┐ f рдореЗрдВ рдПрдХ рдмрд╛рд╣рд░реА рдмрдВрдзрди рд╣реИ, рдпрд╣ рдП рдФрд░ рдмреА рджреЛрдиреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рд▓рд┐рдВрдХрд░ рдХреЛ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдирд┐рдпрдо рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдПрдХ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкреНрд░рддреАрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдПрдХ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рддреАрдХ рддреНрд░реБрдЯрд┐ рд╕реЗ рдХрдо рдирд╣реАрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдПрдХ рдкреНрд░рддреАрдХ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВред

рдХреЗ рдЙрдкрдпреЛрдЧ

рдмрд╛рд╣рд░реА рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдорд╛рдирдХ рдЙрджрд╛рд╣рд░рдг рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдк рдПрдХ рд╕реЗрд▓реНрдл-рдмреЗрдХрд┐рдВрдЧ рдХреЗрдХ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреЗрдХ рд╕реЗ рдЬреБрдбрд╝реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдХреЗрдХ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЦрд╛рджреНрдп рд╕рд░реНрдХрд┐рдЯ рдХреА рдШрдбрд╝реА рдХреА рдЖрд╡реГрддреНрддрд┐ рд╣реИред рдпрд╣ рдореВрд▓реНрдп рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╕рднреА рдЪреЙрдХрд▓реЗрдЯ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рдХреЗ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧреЛрдВ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕реА (рддрд░реАрдХрд╛) рдПрдХ рдореИрдХреНрд░реЛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ:

 #define CLK 1000000 

рдПрдХ рд╕реА ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬреЛ рдореИрдХреНрд░реЛрдЬрд╝ рд╕реЗ рдШреГрдгрд╛ рдХрд░рддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдХреЛ рдмреЗрд╣рддрд░ рд▓рд┐рдЦреЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣:

 // global.hpp namespace Global { extern unsigned int clock_rate; } // global.cpp namespace Global { unsigned int clock_rate = 1000000; } 

(рдПрдХ рдЖрдзреБрдирд┐рдХ C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬреБрджрд╛рдИ рд╢рд╛рдмреНрджрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдЧрд╛: рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд int clock_rate = 1'000'000);

рдЖрдВрддрд░рд┐рдХ рд╕рдВрдЪрд╛рд░

рдпрджрд┐ рдкреНрд░рддреАрдХ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдХрдиреЗрдХреНрд╢рди рд╣реИ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдИ рдХреЗ рдЕрдВрджрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рджреГрд╢реНрдпрддрд╛ рдХреЛ рднреНрд░рдорд┐рдд рди рдХрд░реЗрдВ, рдЬреИрд╕реЗ рдХрд┐ рдирд┐рдЬреАред рджреГрд╢реНрдпрддрд╛ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд▓рд┐рдВрдХрд░ рдЗрд╕ рдкреНрд░рддреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдИ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреАрдХ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдмрд╛рдж рдореЗрдВ рдирд╣реАрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдмрд╛рд╣рд░реА рд╕рдВрдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдкреНрд░рддреАрдХреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ)ред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рддреАрдХ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╕рд╛рд░рдг рдЗрдХрд╛рдИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕ рдкреНрд░рддреАрдХ рдХреА рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред рдЬреИрд╕реЗ рдХрд┐ рдЖрдкрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдИ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкреНрд░рддреАрдХ рдХреЛ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдерд╛ред рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рдХ рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдИ, рдЕрдиреВрдареА рдкреНрд░рддрд┐ рдЖрд╡рдВрдЯрд┐рдд рд╣реЛрдЧреА, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдЙрдЪреНрдЪ рд╕реНрдореГрддрд┐ рд▓рд╛рдЧрдд рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддреА рд╣реИред

рдПрдХ рдкрд░рд╕реНрдкрд░ рдкреНрд░рддреАрдХ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдерд┐рд░ рдХреАрд╡рд░реНрдб C рдФрд░ C ++ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рдпрд╣ рдЙрдкрдпреЛрдЧ рд╡рд░реНрдЧреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ (рдпрд╛, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рдХрд┐рд╕реА рднреА рдмреНрд▓реЙрдХ рдореЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЕрд▓рдЧ рд╣реИред

рдЙрджрд╛рд╣рд░рдг

рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

header.hpp:

 static int variable = 42; 

file1.hpp:

 void function1(); 

file2.hpp:

 void function2(); 

file1.cpp:

 #include "header.hpp" void function1() { variable = 10; } 


file2.cpp:

 #include "header.hpp" void function2() { variable = 123; } 

main.cpp:

 #include "header.hpp" #include "file1.hpp" #include "file2.hpp" #include <iostream> auto main() -> int { function1(); function2(); std::cout << variable << std::endl; } 

рд╣реИрдбрд░.рд╣реНрдкреНрдк рд╕рд╣рд┐рдд рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдИ рдХреЛ, рдЗрд╕рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдХрд╛рд░рдг, рдЪрд░ рдХреА рдПрдХ рдЕрдиреВрдареА рдкреНрд░рддрд┐ рдорд┐рд▓рддреА рд╣реИред рддреАрди рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдЗрдпрд╛рдБ рд╣реИрдВ:

  1. file1.cpp
  2. file2.cpp
  3. main.cpp

рдЬрдм function1 рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ file1.cpp рд╡реИрд░рд┐рдПрдмрд▓ рдХреА рдПрдХ рдХреЙрдкреА рдХреЛ рдорд╛рди рдорд┐рд▓рддрд╛ рд╣реИред рдЬрдм function2 рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ file2.cpp рд╡реИрд░рд┐рдПрдмрд▓ рдХреА рдПрдХ рдХреЙрдкреА рдХрд╛ рдорд╛рди 123 рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, main.cpp рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ рдФрд░ 42 рдХреЗ рдмрд░рд╛рдмрд░ рд░рд╣рддрд╛ рд╣реИред

рдЕрдирд╛рдо рдирд╛рдорд╕реНрдерд╛рди

C ++ рдореЗрдВ, рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝реЗ рд╡рд░реНрдгреЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ: рдЕрдирд╛рдо рдирд╛рдо рд╕реНрдерд╛рдиред рдРрд╕рд╛ рд╕реНрдерд╛рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдШреЛрд╖рд┐рдд рд╡рд░реНрдг рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдИ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реЗ рд╣реИрдВред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдпрд╣ рдХрдИ рд╕реНрдерд┐рд░ рдЪрд░рд┐рддреНрд░реЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП, рдЖрдВрддрд░рд┐рдХ рдирд╛рдо рд╕реЗ рдЬреБрдбрд╝реЗ рдЪрд░рд┐рддреНрд░ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдереИрддрд┐рдХ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдирд╛рдо рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдВрддрд░рд┐рдХ рд╕рдВрдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдХрд╛рд░рдг рдЙрдиреНрд╣реЛрдВрдиреЗ рдлрд┐рд░ рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдХреБрдЫ рдЕрдиреНрдп рдЫреЛрдЯреЗ рдЕрдВрддрд░ рд╣реИрдВ рдЬрд┐рди рдкрд░ рдореИрдВ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛ред

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╣реИ:

 namespace { int variable = 0; } 

рдХрд░рддрд╛ рд╣реИ (рд▓рдЧрднрдЧ) рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдмрд╛рдд:

 static int variable = 0; 

рдХреЗ рдЙрдкрдпреЛрдЧ

рддреЛ рдХрд┐рди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ? рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдмрдбрд╝реА рд╡рд╕реНрддреБрдУрдВ рдХреА рдореЗрдореЛрд░реА рдЦрдкрдд рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддреА рд╣реИред рд▓реЗрдХрд┐рди рдореВрд▓ рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рд┐рд░реНрдл рдЕрдЬреАрдм, рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рд╣реИ (рдПрдХ рдРрд╕рд╛ рд╡рд░реНрдЧ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ) рдФрд░ рдЕрдЪрд╛рдирдХ рдЖрдкрдХреЗ "рд╕рд┐рдВрдЧрд▓рдЯрди" рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ (рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ)ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдВрддрд░рд┐рдХ рд╕рдВрдЪрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд╛рдиреАрдп рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдИ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ file1.hpp рдореЗрдВ рдПрдХ foo рд╣реЗрд▓реНрдкрд░ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдЖрдк file1.cpp рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕реА рд╕рдордп, рдЖрдкрдХреЗ рдкрд╛рд╕ file2.hpp рдореЗрдВ foo рдлрдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИред рдкрд╣рд▓реА рдФрд░ рджреВрд╕рд░реА рдлреВ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЕрдиреНрдп рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд┐рд░ рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдПрдХ рд╣реА рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдИ рдореЗрдВ file1.hpp рдФрд░ file2.hpp рджреЛрдиреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ foo рдЫрд┐рдкрд╛рдПрдЧрд╛ред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдирдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдмрд╛рд╣рд░реА рд╕рдВрдмрдВрдз рд╣реЛрдЧрд╛ рдФрд░ рдкрд╣рд▓реЗ рдлреВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рджреВрд╕рд░реЗ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдЧреА, рдЬрд┐рд╕рд╕реЗ рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдирд┐рдпрдо рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХрд░ рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдЕрдВрдд

рдЖрдк рд╣рдореЗрд╢рд╛ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ / рдпрд╛ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдпрд╣рд╛рдВ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╣рдореЗрдВ рдПрдХ рдЦреБрд▓реЗ рджрд┐рди рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/hi432834/


All Articles