G ++ рдореЗрдВ avr рдХреЗ рд▓рд┐рдП C ++ рд╕рдкреЛрд░реНрдЯ

рдПрд╡рд░рдЧреНрд░реАрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реА ++ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХреА рдбрд┐рд▓реАрд╡рд░реА рдореЗрдВ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдпрд╛ рдПрдмреАрдЖрдИ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ: рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдлрд╝рдВрдХреНрд╢рди, рдХреЙрд▓ рдЬреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд╣реА рдбрд╛рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рд▓реЛрдЧ рдЙрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рджрдо рдкрд░ рдЪрд╛рд╣рд┐рдП рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЕрдХреНрд╕рд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдХреНрд╕рд░ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЦрд╛рд▓реА рдЯрд╛рд╕реНрдХ __cxa_pure_virtual (рд╢реВрдиреНрдп) {} рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рдЕрдкрдиреЗ рдкреИрд░ рдХреЛ рдЧреЛрд▓реА рдорд╛рд░рддреЗ рд╣реИрдВ рдпрд╛ __cxa_guard_acquire, __cxa_guard_release рдФрд░ __cxa_guard_abort рдХреЗ рд▓рд┐рдП рд╕реНрдЯрдмреНрд╕ рд▓рд┐рдЦрдХрд░ рдЦреБрдж рдХреЛ рд░реЗрдХ рдмрдирд╛ рд▓реЗрддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЦреБрд╢реА рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЧрд╛рдпрдм рд╣реИ, рдЗрд╕реЗ рдХрд╣рд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдпрд╛ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВред
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рдлреА рд▓реЛрдЧреЛрдВ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ C ++ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЙрдирд╕реЗ рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд▓реЗрдЦ рдХреЗ рдЕрдВрддрд┐рдо рдЦрдВрдб рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВред

Arduino рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдПрдБ

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

рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдФрд░ рджреВрд░рд╕реНрде рддрд░реАрдХреЗ

рдЖрднрд╛рд╕реА рддрд░реАрдХреЛрдВ рдХрд╛ рддрдВрддреНрд░ рдЖрдорддреМрд░ рдкрд░ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдорд╛рдирдХ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдирд┐рдпрдорд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрднрд╛рд╕реА рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдХреЛрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░ рдореЗрдВ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреА рдЬрдЧрд╣ рд╣реЛрдЧреАред рдмрд╛рд▓ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдСрдлрд╕реЗрдЯ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдПрдХ рд╕рдВрдХреЗрддрдХ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд▓рд╛рдкрддрд╛ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП, рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реНрдЯрдм рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рд▓рд┐рдЦрддрд╛ рд╣реИ __cxa_pure_virtual vtable рдореЗрдВред рдпрджрд┐ рдХреЛрдИ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдЯрдм рдкрд░ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдпрд╣ рдореЗрдореЛрд░реА рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛ред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рд▓рдЧрднрдЧ рдореБрдлреНрдд рд╣реИ: __cxa_pure_virtual рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдПрдХрд▓ рдХреЙрд▓ рд╣реИ, рдХреЗрд╡рд▓ 6 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдлреНрд▓реИрд╢ рд▓реЗрддрд╛ рд╣реИред
рдПрдХ рд╡рд╛рдЬрд┐рдм рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреИрд╕реЗ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБ рдмрдирд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ? рдЖрдк рдЗрд╕реЗ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЕрдЬреАрдм рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
class B { public: B() { //   C   ,   vtable  B //        ,  //        virt(),    non_virtual(); } void non_virtual() { //       ,     //      ,   //    B virt(); // pure virtual method called // terminate called without an active exception //   (core dumped) } virtual void virt() = 0; }; class C : public B{ public: virtual void virt() {} }; int main(int argc, char** argv) { C c; return 0; } 
рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рддрдм рддрдХ рди рдХрд╣рд╛ рдЬрд╛рдП рдЬрдм рддрдХ рдХрд┐ рдЗрд╕реЗ рдкреНрд░рд╛рд░рдВрдн рди рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдХрдбрд╝реА рдореЗрд╣рдирдд рдирд╣реАрдВ рдХрд░рдиреА рд╣реИред рдФрд░ рддрд╛рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛрдбрд╝реЗрдВ:
 void __cxa_pure_virtual(void) { // We might want to write some diagnostics to uart in this case std::terminate(); } void __cxa_deleted_virtual(void) { // We might want to write some diagnostics to uart in this case std::terminate(); } 
рдЖрдкрдХреЛ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ std :: рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 2 рдмрд╛рдЗрдЯреНрд╕ рд░реИрдо рдФрд░ 14 рдмрд╛рдЗрдЯреНрд╕ рдлреНрд▓реИрд╢ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕реАрдзреЗ рдЧрд░реНрднрдкрд╛рдд () рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ std :: terminate рдмреЗрд╣рддрд░ рдХреНрдпреЛрдВ рд╣реИред

рд╕реНрдереИрддрд┐рдХ рдЪрд░

рдЖрдк рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рд╕реНрдЯреИрдЯрд┐рдХ рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рдЧреНрд▓реЛрдмрд▓ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдХреЗрд╡рд▓ рдлрдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
 int counter(int start) { static int cnt = start; return ++cnt; } 
рд╕реА рдореЗрдВ, рдЗрд╕ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдереИрддрд┐рдХ рдЪрд░ рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рддрддреНрдХрд╛рд▓ рдорд╛рди рдХреЛ .data рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗред C ++ рдореЗрдВ, рдпрд╣ рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рджреЛ рдереНрд░реЗрдбреНрд╕ рдиреЗ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЪрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдХрдИ рд╕рдВрдХрд▓рдХ рдиреЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рддрд╛рд▓реЗ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рд╣реИ, рдФрд░ рд╕реА ++ 11 рдореЗрдВ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдорд╛рдирдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╕реНрдерд┐рд░ рдЪрд░ gcc рдХреЗ рдЧреИрд░-рд╕реНрдерд┐рд░ рдорд╛рди рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдЧрд╛: gcc / cp / рдШреЛрд╖рдгред
 static <type> guard; if (!guard.first_byte) { if (__cxa_guard_acquire (&guard)) { bool flag = false; try { // Do initialization. flag = true; __cxa_guard_release (&guard); // Register variable for destruction at end of program. } catch { if (!flag) __cxa_guard_abort (&guard); } } } 
рдЬрд╣рд╛рдВ рдЧрд╛рд░реНрдб рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдзреНрд╡рдЬ рдФрд░ рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред Gcc рдХреЗ рд╕реВрддреНрд░реЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХреЗрд╡рд▓ ARM рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдерд╛:
gcc / config / arm / arm.c
 /* The generic C++ ABI says 64-bit (long long). The EABI says 32-bit. */ static tree arm_cxx_guard_type (void) { return TARGET_AAPCS_BASED ? integer_type_node : long_long_integer_type_node; } 
рдЕрдиреНрдп рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: long_long_integer_type_nodeред Avr рдкрд░, -mint8 рд╡рд┐рдХрд▓реНрдк рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ рдпрд╛ рддреЛ 64 рдпрд╛ 32 рдмрд┐рдЯреНрд╕ рдХрд╛ рд╣реЛрдЧрд╛ред 16. guard.first_byte, рдЬрд┐рд╕рдореЗрдВ рдЭрдВрдбрд╛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЗрд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдмрд╕реЗ рдХрдо рдкрддреЗ рд╡рд╛рд▓реЗ рдмрд╛рдЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ: * (reinterpret_cast <char *> (g))ред рдПрдХ рдЕрдкрд╡рд╛рдж рдПрдЖрд░рдПрдо рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╣реИ, рдЬрд╣рд╛рдВ рдкрд╣рд▓реЗ рдмрд╛рдЗрдЯ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдмрд┐рдЯ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреИрд╕реЗ рд╕рд╣реА рд╣реИ?

рдпрджрд┐ рдЖрдкрдХреЛ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реНрдерд┐рд░ рдЪрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ -fno-threadsafe-statics рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЕрдХреНрд╖рдо рдХрд░реЗрдВ рдФрд░ рдЬрдЯрд┐рд▓ рддрд╛рд▓реЗ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрдХрд▓рдХ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдзреНрд╡рдЬ рдЬрд╛рдВрдЪ рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ __cxa_guard_ * рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ arduino рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рддреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдЪрд░ рдХреЛ рдирд┐рдпрдорд┐рдд рдХреЛрдб рд╕реЗ рдФрд░ рдПрдХ рд░реБрдХрд╛рд╡рдЯ рд╕реЗ рдПрдХ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, __cxa_guard_acquire рдХреЛ рдмреАрдЪ рдореЗрдВ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ __cxa_guard_release рдФрд░ __cxa_guard_abort рдХреЛ рдЙрдиреНрд╣реЗрдВ рдЙрдирдХреА рдкрд┐рдЫрд▓реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрд░рдЯреАрдУрдПрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рд╕рдВрднрд╡рдд: рджреЛ рдереНрд░реЗрдбреНрд╕ рдХреЗ рд▓рд┐рдП рд╢реБрджреНрдзрддрд╛ рдЫреЛрдбрд╝рдХрд░, рдЗрдВрдЯрд░рдкреНрдЯ рдореЗрдВ рд╢реБрджреНрдзрддрд╛ рдХрд╛ рддреНрдпрд╛рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
 namespace { // guard is an integer type big enough to hold flag and a mutex. // By default gcc uses long long int and avr ABI does not change it // So we have 32 or 64 bits available. Actually, we need 16. inline char& flag_part(__guard *g) { return *(reinterpret_cast<char*>(g)); } inline uint8_t& sreg_part(__guard *g) { return *(reinterpret_cast<uint8_t*>(g) + sizeof(char)); } } int __cxa_guard_acquire(__guard *g) { uint8_t oldSREG = SREG; cli(); // Initialization of static variable has to be done with blocked interrupts // because if this function is called from interrupt and sees that somebody // else is already doing initialization it MUST wait until initializations // is complete. That's impossible. // If you don't want this overhead compile with -fno-threadsafe-statics if (flag_part(g)) { SREG = oldSREG; return false; } else { sreg_part(g) = oldSREG; return true; } } void __cxa_guard_release (__guard *g) { flag_part(g) = 1; SREG = sreg_part(g); } void __cxa_guard_abort (__guard *g) { SREG = sreg_part(g); } 


рдХрд┐рддрдирд╛?

рдпрджрд┐ рдЖрдк рд╕реНрдереИрддрд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░рдВрддрд░ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдореБрдлрд╝реНрдд рд╣реИред рдпрджрд┐ рдЖрдк -fno-threadsafe-statics рдлрд╝реНрд▓реИрдЧ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлрд╝реНрд▓реИрдЧ рдХреЗ рд▓рд┐рдП 8 рдмрд╛рдЗрдЯреНрд╕ RAM рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рд▓рд┐рдП 12 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░ рдХреЗ рд▓рд┐рдП рдлреНрд▓реИрд╢ рдХреЗ 38 рдмрд╛рдЗрдЯреНрд╕ рдФрд░ рдкреВрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ 44 рдЦрд░реНрдЪ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдереИрддрд┐рдХ рдЪрд░ рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХреЗ рджреМрд░рд╛рди рд░реБрдХрд╛рд╡рдЯреЛрдВ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдЖрдк рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ?
рдкрд╕рдВрдж рдЖрдкрдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп __cxa_guard_ * рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдкреНрд▓рдЧ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╣рд░ рдЬрдЧрд╣ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рд╕реНрдерд┐рд░ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдХрд╣рд╛рдБ рд╕реЗ рд▓рд╛рдКрдБ?

abi.h рдФрд░ abi.cpp

рдСрдкрд░реЗрдЯрд░ рдирдпрд╛ рдФрд░ рдСрдкрд░реЗрдЯрд░ рд╣рдЯрд╛рдПрдВ

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

рдирдП рдФрд░ рд╣рдЯрд╛рдП рдЧрдП рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрдЯрд░ рдирдИ рдЖрд╡рдВрдЯрди рдореЗрдореЛрд░реА рд╣реИ рдФрд░ рдПрд░рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдСрдкрд░реЗрдЯрд░ рдирдпрд╛ [] рд╣реИред рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рд╡реЗ рдЙрд╕ рдирдП рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ [] рдЬрдм рд╡рд╣ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рдгреА рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореЗрдореЛрд░реА рдХреЛ рдореБрдХреНрдд рдХрд░рддреЗ рд╕рдордп [] рдЬреЛрдбрд╝реАрджрд╛рд░ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдпрд╛ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рджреВрд╕рд░реЗ, рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрдЯрд░, C ++ рдореЗрдВ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреА рддрд░рд╣, рдУрд╡рд░рд▓реЛрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдорд╛рдирдХ рддреАрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:
  1.  void* operator new(std::size_t numBytes) throw(std::bad_alloc); 
    рдЖрдХрд╛рд░ рдХреЗ рдПрдХ рд╕реНрдореГрддрд┐ рдмреНрд▓реЙрдХ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИред рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЕрдкрд╡рд╛рдж std :: bad_alloc рдлреЗрдВрдХрддрд╛ рд╣реИ
  2.  void* operator new(std::size_t numBytes, const std::nothrow_t& ) throw(); 
    рдЖрдХрд╛рд░ рдХреЗ рдПрдХ рд╕реНрдореГрддрд┐ рдмреНрд▓реЙрдХ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИред рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрд╢рдХреНрдд рджреЗрддрд╛ рд╣реИ
  3.  inline void* operator new(std::size_t, void* ptr) throw() {return ptr; } 
    рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдирдпрд╛, рд╡рд╣ рд╡рд╕реНрддреБ рд░рдЦрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛ рдерд╛ред рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
Arduino рдореЗрдВ, рдЕрдЬреНрдЮрд╛рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдХреЗрд╡рд▓ void * рдСрдкрд░реЗрдЯрд░ рдирдпрд╛ (std :: size_t numBytes) рдереНрд░реЛ (std :: bad_alloc) рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ 0 рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рд▓реМрдЯрд╛ рд╣реБрдЖ рдорд╛рди рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реИред ред
рдСрдкрд░реЗрдЯрд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд╕рд╛рде, рдЪреАрдЬреЗрдВ рдереЛрдбрд╝реА рдкреЗрдЪреАрджрд╛ рд╣реЛрддреА рд╣реИрдВред рд╢реВрдиреНрдп * рдСрдкрд░реЗрдЯрд░ рдбрд┐рд▓реАрдЯ (std :: size_t numBytes) рдФрд░ void * рдСрдкрд░реЗрдЯрд░ рдбрд┐рд▓реАрдЯ [] (std :: size_t numBytes) рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рднрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрди рдЕрдзрд┐рднрд╛рд░реЛрдВ рдХреЛ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рднрд╛рд╖рд╛ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдХрдВрдкрд╛рдЗрд▓рд░ рдбрд┐рд▓реАрдЯ рдСрдкрд░реЗрдЯрд░ рдХреЗ рдУрд╡рд░рд▓реЛрдбреЗрдб рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЧрддрд┐рд╢реАрд▓ рдореЗрдореЛрд░реА рдореЗрдВ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдирдП рдСрдкрд░реЗрдЯрд░ рдиреЗ рдореЗрдореЛрд░реА рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛, рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдиреЗ рдЗрд╕реЗ рднрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ред рдЖрдкрдХрд╛ рдХреЛрдб рдЕрднреА рддрдХ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рдХреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рддрд╛рдХрд┐ рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╡рд┐рдлрд▓ рд╡рд╕реНрддреБ рдХреА рд╕реНрдореГрддрд┐ рдХреЛ рд╡рд╛рдкрд╕ рди рдХрд░ рд╕рдХреЗред рдЗрд╕рд▓рд┐рдП, рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдХреЙрд▓ рдбрд┐рд▓реАрдЯ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдореЗрдореЛрд░реА рдХреЛ рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдирдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ "рдЖрд╡рдВрдЯрд┐рдд" рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рд╕рд╛рдзрд╛рд░рдг рдбрд┐рд▓реАрдЯ рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИ, рддреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдбрд┐рд▓реАрдЯ рдХреЗ рдУрд╡рд░рд▓реЛрдбреЗрдб рд╡рд░реНрдЬрди рдХреЛ рдЙрдиреНрд╣реАрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдирдпрд╛ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдСрдкрд░реЗрдЯрд░ рдХреЗ рддреАрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ рдФрд░ рдСрдкрд░реЗрдЯрд░ рдХреЗ рддреАрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ []ред

рдЦрд╝рд░рд╛рдм_рд▓реЛрдХ рд╕рдВрднрд╛рд▓рдирд╛

рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рдХрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд▓реЗрдХрд┐рди gcc avr рдкрд░ рдЕрдкрд╡рд╛рджреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛: рдЙрдиреНрд╣реЗрдВ рдлреЗрдВрдХрд╛ рдпрд╛ рдкрдХрдбрд╝рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЙрдиреНрд╣реЗрдВ рдкрдХрдбрд╝рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХ рднреА рдХреЛрд╢рд┐рд╢ рдЦрдВрдб рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрджрд┐ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ std :: terminate рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реА ++ рдорд╛рдирдХ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ 15.5.1) рд╕реНрдЯреИрдХ рдХреЛ рдЦреЛрд▓рдирд╛ рдирд╣реАрдВред рдЗрд╕рд▓рд┐рдП, рдирдпрд╛ std :: рдХреЛ рд╕реАрдзреЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛ред
рдбрд░реЛ рдордд рдХрд┐ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдлрд░реНрдорд╡реЗрдпрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛! рдЦрд╝рд░рд╛рдм_рд▓реЛрдХ рд╣реЛрдиреЗ рдкрд░ рдЖрдк рдХрд┐рддрдиреА рдмрд╛рд░ рдХреБрдЫ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЖрдорддреМрд░ рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВред рдЖрдкрдХрд╛ рдлрд░реНрдорд╡реЗрдпрд░ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЬрд╛рд░реА рдирд╣реАрдВ рд░рдЦ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рднрдЧрд╡рд╛рди рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ рдЖрдк рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рдиреЛрдЯрд╣реНрд░реЛ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реЗ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдорд╛рд▓реЙрдХ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦреЗрдВ, рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдореВрд▓реНрдп рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ред

рдХрд╣рд╛рдБ рд╕реЗ рд▓рд╛рдКрдБ?

UClibc ++ рдореЗрдВ рдирдП рдФрд░ рдбрд┐рд▓реАрдЯ рдХрд╛ рдкреВрд░реНрдг рдФрд░ рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рд╕рдЪ рд╣реИ, std рдХреЗ рдмрдЬрд╛рдп :: terminate, abort () рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдпрд╛ред рдЙрд╕реА рд╕рдордп, рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд▓рд┐рд╕реНрдЯреНрд╕, std :: Move and std :: forvard, рд╡рд╣рд╛рдБ рдЬреЛрдбрд╝реЗ рдЧрдПред

std :: рд╕рдорд╛рдкреНрддрд┐ рдмрдирд╛рдо рдЧрд░реНрднрдкрд╛рдд ()

Avr-libc рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдмреЙрд░реНрдЯ () рдлрд╝рдВрдХреНрд╢рди рд╕рднреА рдЕрд╡рд░реЛрдзреЛрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдПрдХ рдЕрдирдВрдд рд▓реВрдк рдореЗрдВ рдЖрддрд╛ рд╣реИред рдпрд╣ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ред рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЦрддрд░рдирд╛рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рд╣реАрдЯрд┐рдВрдЧ рддрддреНрд╡ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЙрд╕ рд╕рдордп рдЪрдХреНрд░ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдмреЛрд░реНрдб рдХреЗ рд╕рднреА рдЖрдЙрдЯрдкреБрдЯ рдХреЛ 0. рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рджреВрд╕рд░рд╛, рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдЦрд░рд╛рдм рд╣реИ рдФрд░ рдореБрдЭреЗ рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╡реЙрдЪрдбреЙрдЧ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рддреБрд░рдВрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдлрд░реНрдорд╡реЗрдпрд░ std :: рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЕрдкрдирд╛ рд╣реИрдВрдбрд▓рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рд╡рд╣рд╛рдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВ рдЧрд░реНрднрдкрд╛рдд рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛: рдпреВрдирд┐рдХреНрд╕ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЧрдпрд╛ рддрдВрддреНрд░ рдПрд╡реАрдЖрд░ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЙрди 2 рдмрд╛рдЗрдЯреНрд╕ рд░реИрдо рдФрд░ рдлреНрд▓реИрд╢ рдХреЗ 14 рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдХрд┐ std :: рд╕рдорд╛рдкреНрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╡реНрдпрд╛рдкреНрдд рд╣реИрдВред

рдЕрдкрд╡рд╛рдж

рдЕрдкрд╡рд╛рдж - C ++ рдХрд╛ рд╡рд╣ рд╣рд┐рд╕реНрд╕рд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рди рдХреЗрд╡рд▓ рдЙрд╕ рдХреЛрдб рдореЗрдВ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрд╕ рдХреЛрдб рдореЗрдВ рднреА рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрд╡рд╛рдж рдЙрдбрд╝ рд╕рдХрддрд╛ рд╣реИ: рд╕рдВрдХрд▓рдХ рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рдмрдирд╛рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рдЪрд░ рдХреЗ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ RTTI рдФрд░ рдПрдХ рдЫреЛрдЯреЗ рдмреИрдХрдЕрдк рдореЗрдореЛрд░реА рдмрдлрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдореЗрдореЛрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП std :: bad_alloc рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕реА ++ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд░рдирдЯрд╛рдЗрдо рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдЬреЛ рдХреЛрдИ рднреА рдПрд╡реАрдЖрд░ рдкрд░ рд▓рд╛рдкрддрд╛ рдЕрдкрд╡рд╛рдж рд╕рдорд░реНрдерди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордЭрддрд╛ рд╣реИ, рдЙрд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдХрдИ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рдо рднреА рдХрд░рдиреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, gcc рдореЗрдВ AVR рдкрд░ рдЕрдкрд╡рд╛рджреЛрдВ рдХрд╛ рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдПрд╕рдЯреАрдПрд▓

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

рдХрд╣рд╛рдБ рд╕реЗ рд▓рд╛рдКрдБ?

UClibc ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ: std :: map рдФрд░ std :: рд╕реЗрдЯ рдХреЛ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдбрд╛рд▓рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдирдХреА рдПрдХ рдЕрд▓рдЧ рдЬрдЯрд┐рд▓рддрд╛ рд╣реИред рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ, рд▓реЗрдЦрдХ рдиреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдХрд┐ рдЙрд╕рдиреЗ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ред

C ++ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИ?

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

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


All Articles