是否有任何編輯人員對於goto行功能遵守C#line指令?#line並跳轉至
語境: 我工作的一個代碼生成器,需要跳轉到一個線路輸出,但該行相對載明的#line指令,我加入。 我可以刪除他們,但隨後發現輸入線甚至更糟糕的疼痛
是否有任何編輯人員對於goto行功能遵守C#line指令?#line並跳轉至
語境: 我工作的一個代碼生成器,需要跳轉到一個線路輸出,但該行相對載明的#line指令,我加入。 我可以刪除他們,但隨後發現輸入線甚至更糟糕的疼痛
#line
指令通常是通過預編譯器插入,不進源代碼,所以編輯器通常不會兌現,如果文件擴展名是.c
。
但是,後編譯文件的正常文件擴展名是.i
或.gch
,所以您可以嘗試使用它並查看會發生什麼情況。
我偶爾會在頭文件中使用以下內容來生成可在VC6和最近的VS(2003+)編譯器窗口的 中單擊的項目。
基本上,這利用了編譯器輸出 中輸出的項目基本上被解析爲「PATH(LINENUM):message」的事實。
這假定在微軟編譯器對「附註提醒」的處理上。
這不完全正是你所問......但它可能通常有幫助 在達到你可以讓編譯器發出的東西,一些編輯可能會榮幸。
// The following definitions will allow you to insert // clickable items in the output stream of the Microsoft compiler. // The error and warning variants will be reported by the // IDE as actual warnings and errors... which means you can make // them occur in the task list. // In theory, the coding standards could be checked to some extent // in this way and reminders that show up as warnings or even // errors inserted... #define strify0(X) #X #define strify(X) strify0(X) #define remind(S) message(__FILE__ "(" strify(__LINE__) ") : " S) // example usage #pragma remind("warning: fake warning") #pragma remind("error: fake error")
我還沒有嘗試過一段時間,但它應該仍然有效。
使用sed或類似的工具將#lines轉換爲其他未由編譯器解釋的東西,因此您會在實際行中獲得C錯誤消息,但是會引用附近的原始輸入文件。
我是這樣做的;爲代碼生成器添加一個標誌以省略#lines和重建 – BCS 2008-09-18 22:22:12
最佳回答日期: – BCS 2008-09-18 22:22:51