我有一個代碼生成器,它將採取一些用戶編寫的代碼並將其塊嵌入到更大的生成文件中。我希望底層編譯器在用戶代碼存在缺陷時提供良好的診斷,但是我也不希望生成的代碼中的缺陷在它們不應該被錯誤地分配給源代碼時。重置C/C++預處理器#line物理文件/行
我打算在每個用戶編寫的代碼塊開始時發出#line lineNum "sourceFile"
指令。但是,我找不到#line
指令的任何文檔,它提到了一旦我離開用戶提供的代碼時,將「__LINE__
」和「__FILE__
」重置回生成文件中的實際行的技術。理想的解決方案將類似於C#預處理器的#line default
指令。
我是否需要跟蹤自己寫了多少行並手動重置了自己?或者有沒有更好的方法,某種重置指令或標記值可以傳遞給#line
以消除與用戶代碼的關聯?
看起來這可能是posed before,雖然沒有可靠的答案。爲了區分這一點,我還要問,C++ 11中是否存在缺少答案。
您打算提供已經預處理的代碼嗎? – 2013-02-12 01:30:41
不,它是從提供一些RPC接口定義和更高級別控制流的輸入生成更多有用的輸出。說明性(如果大的話)示例輸入是[this](http://charm.cs.illinois.edu/cgi-bin/gitweb2.cgi?p=charmlu.git;a=blob;f=lu.ci;h = 5d84a2f02a9d1e4d77767037b68078ff583bea57; HB = HEAD)。尋找用戶編寫的C++代碼的'原子'塊,這些代碼將逐字發送,我希望參考。輸出實際上在其他C++源文件中獲得'#include',並作爲這些文件的一部分進行預處理和編譯。 – Novelocrat 2013-02-12 01:34:48
您是否可以在文件末尾發出用戶代碼,以便您不必切換行號/文件名稱? – 2013-02-12 01:38:59