2012-06-05 48 views
1

有人知道在包含文件中發生錯誤時是否可以獲取正在編譯的文件的錯誤行?在包含文件中發生編譯錯誤時獲取編譯器:錯誤行

例如,我正在編譯一個文件,比如abc.p,它使用def.i到處都是。在某些時候,我對abc.p做了一個改變,導致其中一個包含編譯錯誤,所以消息說錯誤發生在def.i的第123行,但我想知道abc中的哪一行。那就是。換句話說,使用有問題的包含文件的行號。

即使「Compiler:Get-File-Name(n)」返回了def.i,並且「Compiler:File-Name」返回了abc.p,「Compiler:Get-Row(n)」以及「編譯器:Error-Row「返回def.i中的行號。

任何想法?

+0

郵政abc.p和def.i的代碼示例,它會更容易回答你的問題 – briddums

+0

清單代碼的例子只是使它不太清楚。我們有一個荒謬的程序,多年來就像癌症一樣長大,成千上萬條包含數百個特定文件的行。它有數百個內部程序和函數,某些地方有人錯誤地使用了其中的一個。但不是編譯錯誤,說「癌症行1872362導致了一個錯誤」,它說「第3行tumour.i導致錯誤」。然後,我們必須手動挖掘才能發現數百次事件中有哪些出錯,並且我們不喜歡手動執行操作。 – RobertT

回答

2

我的猜測是保存編譯器列表或調試文件,然後看看。

除此之外,我不認爲有一種方法,現在做到這一點 - 你需要提交增強請求得到這個功能。

+0

手動保存列表並檢查結果是我們目前正在做的事情。我在尋找的是從編譯器獲取信息的程序化方式,這樣我們可以使錯誤消息更加有用。但我相信你的回答是正確的 - 現在似乎沒有辦法做到這一點。 – RobertT

+0

當它被拋出時可能會捕捉到編譯器錯誤,解析得到第#行,然後將該文件編譯到調試列表並找到相應的錯誤上下文。 –

0

我跟蹤這種錯誤的方法是使用程序編輯器

compile source.p preprocess source.pp.

開放source.pp和語法檢查。 這給你擴展源中的錯誤位置。 找到不包含在include中的代碼並在原始代碼中搜索該代碼後,找到該代碼。