名稱空間
變體
操作

檔名和行資訊

來自 cppreference.com
 
 
C++ 語言
 
 

更改預處理器中原始碼的行號,以及可選地更改當前檔名。

目錄

[編輯] 語法

#line 行號 (1)
#line 行號 "檔名" (2)

[編輯] 解釋

1) 將當前預處理器行號更改為 行號。此後宏 __LINE__ 的擴充套件將擴充套件為 行號 加上此後遇到的實際原始碼行數。

2) 同時將當前預處理器檔名更改為 檔名。此後宏 __FILE__ 的擴充套件將生成 檔名

任何預處理記號(宏常量或表示式)都可以作為 #line 的引數,只要它們擴充套件為有效的十進位制整數,其後可選地跟一個有效的字串。

行號 必須是至少一個十進位制數字的序列(否則程式格式錯誤),並且總是被解釋為十進位制(即使它以 0 開頭)。

如果 行號0 或大於 32767(C++11 之前)2147483647(C++11 起),則行為未定義。

[編輯] 注意

此指令被一些自動程式碼生成工具使用,這些工具從用另一種語言編寫的檔案生成 C++ 原始檔。在這種情況下,#line 指令可以插入到生成的 C++ 檔案中,引用原始(可人工編輯的)原始檔的行號和檔名。

[編輯] 示例

#include <cassert>
#define FNAME "test.cc"
int main()
{
#line 777 FNAME
        assert(2+2 == 5);
}

可能的輸出

test: test.cc:777: int main(): Assertion `2+2 == 5' failed.

[編輯] 參考

  • C++23 標準 (ISO/IEC 14882:2024)
  • 15.7 行控制 [cpp.line]
  • C++20 標準 (ISO/IEC 14882:2020)
  • 15.7 行控制 [cpp.line]
  • C++17 標準 (ISO/IEC 14882:2017)
  • 19.4 行控制 [cpp.line]
  • C++14 標準 (ISO/IEC 14882:2014)
  • 16.4 行控制 [cpp.line]
  • C++11 標準 (ISO/IEC 14882:2011)
  • 16.4 行控制 [cpp.line]
  • C++98 標準 (ISO/IEC 14882:1998)
  • 16.4 行控制 [cpp.line]

[編輯] 另請參閱

一個表示原始碼資訊的類,例如檔名、行號和函式名
(類) [編輯]
C 文件 用於 檔名和行資訊