是否有任何编辑遵守关于goto line功能的C#line指令?
上下文: 我正在编写一个代码生成器,需要跳转到输出的一行,但该行是相对于我正在添加的#line指令指定的。 我可以放弃它们但是找到输入线甚至是更糟糕的痛苦
答案 0 :(得分:2)
如果编辑器是可编写脚本的,则应该可以编写脚本来进行导航。甚至可能有一个Vim或Emacs脚本已经做了类似的事情。
当我写了很多Bison / Flexx时,我编写了一个Zeus Lua宏脚本试图做类似的事情(即通过搜索#line从输入文件移动到输出文件的相应行)标记物)。对于任何可能对该特定宏脚本here is感兴趣的人。
答案 1 :(得分:0)
#line
指令通常由预编译器插入,而不是插入到源代码中,因此如果文件扩展名为.c
,编辑人员通常不会遵守该指令。
但是,后期编译文件的正常文件扩展名为.i
或.gch
,因此您可以尝试使用它,看看会发生什么。
答案 2 :(得分:0)
我偶尔在头文件中使用以下内容来生成可点击的项目 VC6和最近的VS(2003+)编译器ouptut窗口。
基本上,这会利用编译器输出中的项输出这一事实 基本上被解析为“PATH(LINENUM):message”。
这假定Microsoft编译器对“pragma remind”的处理。
这不完全是你问的......但它可能通常很有帮助 在达到某些东西时,你可以让编译器发出一些编辑可能会尊重的东西。
// 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")
我有一段时间没试过,但它仍然有用。
答案 3 :(得分:0)
使用sed或类似工具将#lines转换为其他未被编译器解释的工具,因此您在实际行上获得C错误消息,但引用了附近的原始输入文件。