我有一個c#應用程序,它使用T4模板生成嵌入式C代碼。 但是,我有一個小問題,產生的輸出,我不知道是否有一個優雅的解決方案。T4編輯生成的代碼生成
的問題是圍繞兩個I循環使用下面的T4模板循環和foreach創建枚舉和其他表:
typedef enum eSDef_Index
{
<# for (int i = 0; i < ScreenDefinitions.Count(); i++)
{ #>
SD_IDX_<#=ScreenDefinitions[i].Name.ToUpper() #> = <#=i#>,
<# }
// >>>> Can we do a backspace here?
#>
}eSDEF_INDEX;
這成功地創建了我想要的枚舉。但是我使用的C編譯器不喜歡最後一個枚舉條目有逗號。我可以通過檢查這是否是列表中的最後一項來解決這個問題,但是我想知道是否有更優雅的方法?
我的想法是有效地刪除最後一個逗號後,它可能使用退格生成。
那麼有可能添加直接影響生成的代碼的特殊字符?或以其他方式做這件事?
我發現這是你可以使用PushIndex( 「\ t」 的)插入選項卡提供更多的信息。因此,你可以假設(?)你可以使用PushIndex(「\ b」)做一個退格,但是實際上在那裏放置了一個字符集的持有者,所以不會像我所期望的那樣做:( – TheGrovesy
你使用了什麼編譯器不符合) – Luca
@Luca它是一個非常老的ST Cosmic編譯器 – TheGrovesy