#line, directive

Directive de préprocesseur qui définit le numéro de ligne et le nom de fichier stockés en interne du compilateur sur les valeurs spécifiées.

#line lineNumber « filename »

Paramètres

Élément Description
lineNumber
Numéro de ligne à définir. Il peut s’agir de n’importe quelle constante entière. Le remplacement de macro peut être effectué sur les jetons de prétraitement, tant que le résultat est évalué à la syntaxe correcte.
nom_fichier [facultatif]
Nom de fichier à définir. Le nom de fichier peut être n’importe quelle combinaison de caractères et doit être placé entre guillemets doubles ( » « ). Si ce paramètre est omis, le nom de fichier précédent reste inchangé.

Notes

Le compilateur utilise le numéro de ligne et le nom de fichier pour faire référence aux erreurs qu’il trouve pendant la compilation. Le numéro de ligne fait généralement référence à la ligne d’entrée actuelle, et le nom de fichier fait référence au fichier d’entrée actuel. Le numéro de ligne est incrémenté une fois chaque ligne traitée. 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. La directive #line est généralement utilisée par les générateurs de programmes pour provoquer des messages d’erreur qui font référence au fichier source d’origine plutôt qu’au programme généré.

Le traducteur utilise le numéro de ligne et le nom de fichier pour déterminer les valeurs des macros prédéfinies __FILE__ et __LINE__. Vous pouvez utiliser ces macros pour insérer des messages d’erreur auto-descriptifs dans le texte du programme. La macro __FILE__ est étendue à une chaîne dont le contenu est le nom de fichier, entouré de guillemets doubles (« »).

Exemples

L’exemple suivant définit le numéro de ligne sur 151 et le nom de fichier sur « copy.c ».

#line 151 "copy.c"

Dans l’exemple suivant, la macro ASSERT utilise les macros prédéfinies __LINE__ et __FILE__ pour imprimer un message d’erreur sur le fichier source si l’assertion spécifiée n’est pas vraie.

#define ASSERT(cond)

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

Voir aussi

Directives de préprocesseur (DirectX HLSL)