Visual C ++ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ #line рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐

image1.png

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

рддреНрд░реБрдЯрд┐ рдЗрддрд┐рд╣рд╛рд╕ рдФрд░ рд╡рд┐рд╡рд░рдг


#Line рдирд┐рд░реНрджреЗрд╢ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬреЛ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реАрдВ рд╕реЗ рдПрд░рд░ рд╕рд░реНрдЪ рдХреА рдХрд╣рд╛рдиреА рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред

рдмрдбрд╝реЗ рдХреЛрдб рдмреЗрд╕ рд╡рд╛рд▓реЗ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдореЗрдВ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЯреВрд▓рд╕реЗрдЯ рд╕рдВрд╕реНрдХрд░рдг v141 рд╕реЗ v142 рддрдХ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ, V002 рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХрд╛ рдЙрдЫрд╛рд▓ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдФрд░ рдХрдИ рджрд╕рд┐рдпреЛрдВ рдЕрдиреНрдп рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рдХреЛрдб рдХреА рдЧрд▓рдд рд▓рд╛рдЗрдиреЛрдВ (рдПрдХ рд▓рд╛рдЗрди рддреНрд░реБрдЯрд┐) рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рдХреА рдЧрдИрдВред )

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

рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЛрдб рдХреА рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд▓рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рд╛рд░реВрдк рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛:

#define MACRO(a, b)              // line1
                                 // line2
int main(int argc, char* argv[]) // line3
{                                // line4
    MACRO("Some string",         // line5
        42);                     // line6
    return 0;                    // line7 <=
}

рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

#line 1 "D:\\_Tests\\TestApp\\Project2\\rnd_bs.cpp"


int main(int argc, char* argv[])
{
  ;
#line 8 "D:\\_Tests\\TestApp\\Project2\\rnd_bs.cpp"
  return 0;
}

рд╡рд╛рдкрд╕реА рдХрдерди рдкрд░ рд╣реИ 7 рд╡реАрдВ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрди, рдФрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рдкреНрд░рдХреНрд░рдордХ рдЕрдВрдХ 8 рд▓рд╛рдЗрдиред рдпрд╣ рддреНрд░реБрдЯрд┐ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ, рд╕рдВрднрд╡рддрдГ рдмрд╣реБ-рд▓рд╛рдЗрди рдореИрдХреНрд░реЛ рдХреЗ рдХрд╛рд░рдг рд╣реБрдИред

рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдВрд╕реНрдХрд░рдг


рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рд╕рдорд╕реНрдпрд╛ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдереА, рд╕рдВрд╕реНрдХрд░рдг 16.4.3 (рджрд┐рдирд╛рдВрдХ 14 рдЬрдирд╡рд░реА, 2020) рддрдХред рд╣рдордиреЗ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ " рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ (VS2019, v142) рдХреЗ рдмрд╛рдж рдЕрдорд╛рдиреНрдп #line рдирд┐рд░реНрджреЗрд╢ " рдЦреЛрд▓реА рдФрд░ 4 рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рдж рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЬрд╡рд╛рдм рдорд┐рд▓рд╛:

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЬреБрдбрд╝реЗ рдлреАрдбрдмреИрдХ рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирд╛ рдЧрдпрд╛ рд╣реИ: developercommunity.visualstudio.com/content/problem /738407/preprocessor-generates-incorrect-line-information.html ред рдпрджрд┐ рдЖрдкрдиреЗ рдпрд╣рд╛рдВ рд░рд┐рдкреЛрд░реНрдЯ рдпрд╛ рдорддрджрд╛рди рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рд╡реЛрдЯ рдореВрд▓ рдореБрджреНрджреЗ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдмрд╛рдХреА рд╕рднреА рд▓реЛрдЧ рд╕реАрдзреЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рдлреАрдбрдмреИрдХ рдкрд░ рдЕрдкрдирд╛ рд╡реЛрдЯ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдорддрджрд╛рди рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рддрд╣рдд рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рднрд╛рд╡ рдХреЛ рдордЬрдмреВрдд рдХрд░рдХреЗ рдореБрджреНрджреЗ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкрд╣рд▓реЗ рд╣реА рдмрддрд╛рдИ рдЬрд╛ рдЪреБрдХреА рд╣реИ, рдФрд░ 18 рд╕рд┐рддрдВрдмрд░ 2019 рдХреЛ - рд▓рдЧрднрдЧ рдЖрдзреЗ рд╕рд╛рд▓ рдкрд╣рд▓реЗ: " рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдЧрд▓рдд рд▓рд╛рдЗрди рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ "ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд┐рдПред рд▓реЗрдЦрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рддреНрд░реБрдЯрд┐ рдХрдо рд╕реЗ рдХрдо Visual Studio 2019 16.2 рдХреЗ рд╕рд╛рде рдореМрдЬреВрдж рд╣реИред

рдпрд╣ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдВрдпреЛрдЧ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рдж, рддреНрд░реБрдЯрд┐ рдХреЛ рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЧрдИ - рд▓рдВрдмрд┐рдд рд░рд┐рд▓реАрдЬрд╝ ред

19 рдордИ, 2020 рдХреЛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 16.6.0 рдХрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╣рдо рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВред


рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: Svyatoslav Razmyslovред рд╡рд┐рдЬреБрдЕрд▓ C ++ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ #line рдбрд╛рдпрд░реЗрдХреНрдЯрд┐рд╡ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдмрдЧ ред

All Articles