line 的作用是改變當前行數和檔名稱

2021-09-06 19:22:00 字數 1090 閱讀 3732

#line 的作用是改變當前行數和檔名稱,它們是在編譯程式中預先定義的識別符號命令的基本形式如下:

#line number["filename"]

其中內的檔名可以省略。例如:

#line 30 a.h

其中,檔名a.h 可以省略不寫。

這條指令可以改變當前的行號和檔名,例如上面的這條預處理指令就可以改變當前的行號為30,檔名是a.h。初看起來似乎沒有什麼用,不過,他還是有點用的,那就是用在編譯器的編寫中,我們知道編譯器對c 原始碼編譯過程中會產生一些中間檔案,通過這條指令,可以保證檔名是固定的,不會被這些中間檔案代替,有利於進行分析。

如果程式裡面加了# line 100 "other_file" ,程式是不是就會執行other_file裡面的100行**,到底是不是這個意思?

自己試一試就知道了,這種問題還要問人怎麼成高手?

關於#line

命令#line改變_line_與_file_的內容,它們是在編譯程式中預先定義的識別符號。

命令的基本形式如下:

# line number["filename"]

其中的數字為任何正整數,可選的檔名為任意有效檔案識別符號。行號為源程式中當前

行號,檔名為原始檔的名字。命令# l i n e主要用於除錯及其它特殊應用。

例如,下面說明行計數從1 0 0開始;printf( ) 語句顯示數1 0 2,因為它是語句#line 100後的

第3行。

#line 100 /* 初始化行計數器* /

main ( ) /* 行號100 */

然後就很容易理解了

#include #include int main(void)

只是為了方便除錯而已

__line__ __file__輸出當前**所在行、所在檔案,當程式很複雜的時候,執行時錯誤,列印錯誤資訊時加上行號容易定位

__function__ 輸出當前函式名

__date__ 巨集指令含有形式為月/日/年的串,表示原始檔被翻譯到**時的日期。

__time__ 巨集指令包含程式編譯的時間。時間用字串表示,其形式為: 分:秒

其它:error,pragma,line預處理

在檔案中列印當前檔案資訊和當前行數,供除錯

c99就支援可變引數巨集 define dbgprint format,args.fprintf stderr,format,args define dgbmsg fmt,printf fmt,va args 都是正確的,當然前提是要使用支援c99的編譯器 比如gcc 以下是2種debug寫法,並列...

sql中迴圈處理當前行資料和上一行資料相加減

以下事例,使用游標迴圈表 temptable中資料,然後讓當前行和上一行中的argument1 相加 存放到當前行的 argument2 中,比較簡單。drop table temptable create table temptable argument1 int,argument2 int,ar...

ADF中選擇錶行後改變當前行的編輯狀態

現在要實現在table中,選中某一行,該行的上傳按鈕可用,不選中的行為不可用,如下實現效果 具體實現方式如下 1 對應的table 用屬性關聯實現類 2 對應 上傳 按鈕的 注意這裡disabled的寫法 3 在對應實現類中,每次選中當前行,改變flag的值 public void selectio...