簡體   English   中英

C語言中#line的含義是什么?

[英]What's the meaning of #line in C language?

C語言中#line的含義是什么? 它會在哪里使用?

它告訴編譯器實際來自以下行的位置。 通常只有C預處理器添加這些,例如,當包含文件時,它告訴編譯器(基本上只看到一個數據流)我們正在查看不同的文件。

這可能聽起來很奇怪,但是預處理器只是在您指定包含的地方插入頭文件,並且編譯器可以處理整個事物(所有頭文件與源代碼連接在一起),如果使用,您可以檢查預處理器階段的結果gcc與gcc -E myfile.c 在那里你會注意到它會在你包含文件時添加一個#line指令,並且每當它減少了輸入到編譯器的文本量時(例如大量的注釋可以減少到單個#line指令,跳過前面)

它也被其他程序使用,比如bison / yacc告訴你問題(如果有編譯問題)與你在特定行的規則文件有關,否則編譯器將無法做到這一點,因為bison / yacc生成c文件。

它被稱為預處理器行控制指令

如果使用#line指令,則會更改__FILE____LINE__的擴展。 它使編譯器將下一個源行的行號視為指定的數字。

它的主要用途是使編譯器提供更有意義的錯誤消息。

您可以在IBM的文檔中找到更多解釋和用法示例。

它是一個pragma關鍵字:

#line允許您修改編譯器的行號和(可選)文件名輸出以查找錯誤和警告。此示例顯示如何報告與行號相關的兩個警告。#line 200指令強制行號為200(盡管默認值是#7)並且直到下一個#line指令,文件名將被報告為“Special”。#line default指令將行編號返回到其默認編號,該編號計算由前一個指令重新編號的行。 “

它允許您更改文件的表觀行號。

我能想到的唯一用途就是在一系列多行宏之后使行號保持正常。

用法是:

#line 42

它主要用於提供源文件的文件名和行號,從中創建C文件(標題或實現)。 鑒於此,編譯器將發出暗示源文件而不是生成文件的診斷信息。

預處理器還使用它來提示已經擴展的預處理文件中的包含標頭。

#是處理器c和c ++的符號字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM