directive de #line (C/C++)
la directive d' #line indique le préprocesseur modifier le numéro de ligne en interne enregistré et le nom de fichier du compilateur à un numéro de ligne et à un nom de fichier donnés.
#line digit-sequence ["filename"]
Notes
Le compilateur utilise le numéro de ligne et le nom de fichier facultatif pour faire référence aux erreurs détectées pendant la compilation.Le numéro de ligne fait le plus souvent à la ligne d'entrée actuel, et le nom de fichier fait référence au fichier d'entrée actuel.Le numéro de ligne est incrémenté après chaque ligne ne soit traitée.
la valeur de chiffre- séquence peut être n'importe quelle constante entière.La macro remplacement peuvent être effectuées sur les jetons de prétraitement, mais le résultat doit correspondre à la syntaxe correcte.Le nom de fichier peut être toute combinaison de caractères et doit être placé entre guillemets doubles (**« « **).Si le nom de fichier est omis, le nom de fichier précédent reste inchangée.
Vous pouvez modifier le nombre et le nom de fichier de ligne source en écrivant une directive d' #line .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 de programme.Pour plus d'informations sur ces macros prédéfinies, consultez macros prédéfinies.
La macro de __FILE se développe vers une chaîne dont le contenu est le nom de fichier, entouré par des guillemets doubles (**« « **).
si vous modifiez le numéro de ligne et le nom de fichier, le compilateur ignore les valeurs précédentes et continue de traiter avec les nouvelles valeurs.La directive d' #line est généralement utilisée par les concepteurs de programme pour que faire référence des messages d'erreur au fichier source d'origine au lieu du programme généré.
les exemples suivants montrent #line et les macros de __LINE et de __FILE .
Dans cette instruction, le numéro de ligne en interne stocké a la valeur 151 et le nom de fichier est modifié à copy.c.
#line 151 "copy.c"
Dans cet exemple, macro ASSERT utilise les macros prédéfinies __LINE et __FILE pour imprimer un message d'erreur sur le fichier source si une « assertion » donnée n'est pas remplie.
#define ASSERT(cond)
if( !(cond) )\
{printf( "assertion error line %d, file(%s)\n", \
__LINE__, __FILE__ );}