首页 > 解决方案 > c#中的EnvDTE:如何向生成的c++函数添加参数?

问题描述

我正在尝试生成一个带参数的函数。添加函数头和主体工作正常,但是当我尝试添加参数时,我得到一个我无法解决的异常。

func.AddParameter("num", "int");

我得到了例外:

未能返回新的代码元素。可能是语法错误。新元素名称:num

这就是我生成函数头和函数体的方式:

VCCodeFunction func = (VCCodeFunction)(((VCFileCodeModel)(file.FileCodeModel)).AddFunction("testfunc", vsCMFunction.vsCMFunctionFunction, "testClass2"));
func.BodyText = "for(int i=0; i < 5; ++i){}\n return 1;";

这会产生:

testClass2 testfunc()
{
    for (int i = 0; i < 5; i++) {}
    return 1;
}

作为一个临时解决方案,我通过手动添加参数来解决这个问题

var tp = func.GetStartPoint(vsCMPart.vsCMPartBodyWithDelimiter);
var ep = tp.CreateEditPoint();
ep.CharLeft();
ep.Insert("int num");

但我觉得这是不好的做法。我究竟做错了什么?

标签: c#envdtevisual-studio-sdk

解决方案


推荐阅读