編譯器的錯誤訊息應該像這樣
sourcefile:lineno: message
如果你想提及欄號,請使用以下其中一種格式
sourcefile:lineno:column: message sourcefile:lineno.column: message
行號應該從檔案開頭的 1 開始,而欄號應該從行開頭的 1 開始。(這兩個慣例的選擇都是為了相容性。) 計算欄號時,假設空格和所有 ASCII 列印字元都具有相同的寬度,並假設 Tab 停在每 8 欄。對於非 ASCII 字元,當在 UTF-8 環境設定中時,應該使用 Unicode 字元寬度;GNU libc 和 GNU gnulib 提供了適用的 wcwidth
函數。
錯誤訊息也可以同時提供錯誤文字的起始和結束位置。這裡有幾種格式,讓你可以避免冗餘資訊,例如重複的行號。以下是可能的格式
sourcefile:line1.column1-line2.column2: message sourcefile:line1.column1-column2: message sourcefile:line1-line2: message
當錯誤跨越多個檔案時,你可以使用這種格式
file1:line1.column1-file2:line2.column2: message
來自其他非互動式程式的錯誤訊息應該像這樣
program:sourcefile:lineno: message
當有適當的原始碼檔案時,或是像這樣
program: message
當沒有相關的原始碼檔案時。
如果你想提及欄號,請使用這種格式
program:sourcefile:lineno:column: message
在互動式程式(從終端機讀取命令的程式)中,最好不要在錯誤訊息中包含程式名稱。指示哪個程式正在運作的位置應該在提示符號或螢幕佈局中。(當同一個程式從終端機以外的來源接收輸入執行時,它就不是互動式的,最好使用非互動式風格列印錯誤訊息。)
當字串 message 跟在程式名稱和/或檔案名稱之後時,不應以大寫字母開頭,因為這不是句子的開頭。(句子概念上是從行的開頭開始。) 此外,它不應該以句點結尾。
來自互動式程式的錯誤訊息,以及其他訊息,例如使用訊息,應該以大寫字母開頭。但它們不應該以句點結尾。