#line, directive (CC++/)#line directive (C/C++)

La directive #line indique au préprocesseur de modifier le numéro de ligne et le nom de fichier stockés en interne du compilateur en un numéro de ligne et un nom de fichier donnés.The #line directive tells the preprocessor to change the compiler's internally stored line number and filename to a given line number and filename.

SyntaxeSyntax

#line digit-sequence ["filename"]#line digit-sequence ["filename"]

NotesRemarks

Le compilateur utilise le numéro de ligne et le nom de fichier facultatif pour faire référence aux erreurs qu’il trouve pendant la compilation.The compiler uses the line number and optional filename to refer to errors that it finds during compilation. Le numéro de ligne fait généralement référence à la ligne d’entrée en cours et le nom de fichier fait référence au fichier d’entrée en cours.The line number usually refers to the current input line, and the filename refers to the current input file. Le numéro de ligne est incrémenté après le traitement de chaque ligne.The line number is incremented after each line is processed.

La valeur de la séquence digit peut être n’importe quelle constante entière.The digit-sequence value can be any integer constant. Le remplacement de macro peut être effectué sur les jetons de prétraitement, mais le résultat doit correspondre à la syntaxe correcte.Macro replacement can be performed on the preprocessing tokens, but the result must evaluate to the correct syntax. Le nom de fichier peut être n’importe quelle combinaison de caractères et doit être placé entre" "guillemets doubles ().The filename can be any combination of characters and must be enclosed in double quotation marks (" "). Si filename est omis, le nom de fichier précédent reste inchangé.If filename is omitted, the previous filename remains unchanged.

Vous pouvez modifier le numéro de ligne source et le nom de fichier en écrivant une directive #line .You can alter the source line number and filename by writing a #line directive. Le traducteur utilise le numéro de ligne et le nom de fichier pour déterminer les valeurs des macros __FILE__ prédéfinies et __LINE__.The translator uses the line number and filename to determine the values of the predefined macros __FILE__ and __LINE__. Vous pouvez utiliser ces macros pour insérer des messages d’erreur auto-descriptifs dans le texte du programme.You can use these macros to insert self-descriptive error messages into the program text. Pour plus d’informations sur ces macros prédéfinies, consultez macros prédéfinies.For more information on these predefined macros, see Predefined macros.

La __FILE__ macro se développe en une chaîne dont le contenu est le nom de fichier, entouré par des guillemets doubles (" ").The __FILE__ macro expands to a string whose contents are the filename, surrounded by double quotation marks (" ").

Si vous modifiez le numéro de ligne et le nom de fichier, le compilateur ignore les valeurs précédentes et continue le traitement avec les nouvelles valeurs.If you change the line number and filename, the compiler ignores the previous values and continues processing with the new values. La directive #line est généralement utilisée par les générateurs de programmes pour faire en sorte que les messages d’erreur fassent référence au fichier source d’origine au lieu du programme généré.The #line directive is typically used by program generators to cause error messages to refer to the original source file instead of to the generated program.

Les exemples suivants illustrent #line et __LINE__ les __FILE__ macros et.The following examples illustrate #line and the __LINE__ and __FILE__ macros.

Dans cette instruction, le numéro de ligne stocké en interne est défini sur 151 et le nom de fichier est remplacé par Copy. c.In this statement, the internally stored line number is set to 151 and the filename is changed to copy.c.

#line 151 "copy.c"

Dans cet exemple, la macro ASSERT utilise les __LINE__ macros prédéfinies et __FILE__ pour imprimer un message d’erreur sur le fichier source si une assertion donnée n’a pas la valeur true.In this example, the macro ASSERT uses the predefined macros __LINE__ and __FILE__ to print an error message about the source file if a given assertion is not true.

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

Voir aussiSee also

Directives de préprocesseurPreprocessor directives