【发布时间】:2016-09-06 21:12:36
【问题描述】:
我有一个使用 T4 模板生成嵌入式 C 代码的 c# 应用程序。 但是我对结果输出有一个小问题,我想知道是否有一个优雅的解决方案。
问题是我使用以下 T4 模板循环 for 循环和 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") 来执行退格操作,但实际上在此处放置了一个字符持有人,因此不会像我预期的那样做:(
-
您使用的是什么编译器(不符合标准)。
-
@Luca 它是一个非常古老的 ST Cosmic 编译器。
标签: c# special-characters code-generation t4