VC ++:非全局旧式函数声明?

时间:2009-09-23 07:47:51

标签: c++

在Visual Studio 2003中使用纯C,旧式函数 声明不显示为全局成员 即void func(blah)int blah; {...}

这显示为成员下拉列表中的全局成员:

void func(int blah)
{
    ...
}

这个编译,但旧式不会出现在全球范围内 会员下拉:

void func(blah)
int blah;
{
    ...
}

我正在尝试使用新的“调用图”功能 分析代码,但因为我们的大多数遗留代码都使用了 旧式的函数参数,那些函数都没有 被认可的不是全球会员,因此也是如此 没有出现在“调用图表”中。

有没有办法让“调用图”分析过程 旧式函数声明是否正确?

2 个答案:

答案 0 :(得分:1)

也许你想考虑只改变旧式功能签名。应该没有任何问题。

修改

要将源文件从旧样式语法自动转换为ANSI-C样式,请查看cproto工具。如果你决定走这个方向,也许可以节省你一些时间。

这是文档的摘录:

  

-f n       设置生成的函数原型的样式,其中n是a   从0到3的数字。例如,   考虑函数定义

main (argc, argv)
int argc;
char *argv[];
{
}
     

如果值为0,则不会生成原型。设置为时   1,输出是:

int main(/*int argc, char *argv[]*/);
     

对于值2,输出格式为:

int main(int /*argc*/, char */*argv*/[]);
     

默认值为3.它生成完整的函数原型:

int main(int argc, char *argv[]);

答案 1 :(得分:0)

我不确定但是引擎可能会使用正则表达式来跟踪常规签名,并且未实现旧的C样式。