Sdílet prostřednictvím


#line – direktiva (C++)

Direktiva #line přikazuje preprocesoru, aby změnil interně uložená čísla řádků a název souboru kompilátoru na zadaná čísla řádků a název souboru.

#line digit-sequence ["filename"]

Poznámky

Kompilátor používá číslo řádku a volitelný název souboru pro odkazování na chyby, které zjistí během kompilace.Číslo řádku obvykle odkazuje na aktuální vstupní řádek a název souboru odkazuje na aktuální vstupní soubor.Číslo řádku se zvyšuje po zpracování každého řádku.

Hodnota pořadové číslice může být jakákoli celočíselná konstanta.Nahrazení makrem lze provést u předzpracovaných tokenů, ale výsledek musí být vyhodnocen na správnou syntaxi.Název souboru může obsahovat libovolnou kombinaci znaků a musí být uzavřen do dvojitých uvozovek ("").Pokud je argument názvu souboru vynechán, předchozí název souboru zůstane beze změny.

Je možné změnit zdrojové číslo řádku a název souboru pomocí zapsání direktivy #line.Překladač používá číslo řádku a název souboru k určení hodnoty předdefinovaných maker __FILE__ a __LINE__.Makra je možné použít k vložení samopopisných chybových zpráv do textu program.Další informace o těchto předdefinovaných maker naleznete v tématu Předdefinované makra.

Makro __FILE__ rozšíří řetězec, jehož obsahem je název souboru, uzavřený v uvozovkách ("").

Při změně čísla řádku a názvu souboru, kompilátor ignoruje předchozí hodnoty a pokračuje ve zpracování s novými hodnotami.Direktiva #line je obvykle používána generátory programu pro odkazování chybových zpráv na původní zdrojový soubor místo generovaného programu.

Následující příklady ilustrují makra #line a __LINE__ a __FILE__.

V tomto příkazu je interně uložené číslo nastaveno na 151 a název souboru se změní na copy.c.

#line 151 "copy.c"

V tomto příkladu makro ASSERT používá předdefinovaná makra __LINE__ a __FILE__ pro tisk chybové zprávy o zdrojovém souboru, pokud daný "výraz" není pravda.

#define ASSERT(cond)

if( !(cond) )\
{printf( "assertion error line %d, file(%s)\n", \
__LINE__, __FILE__ );}

Viz také

Referenční dokumentace

Preprocesor – direktivy