在Visual Studio 2003中使用纯C,旧式函数 声明不显示为全局成员 即void func(blah)int blah; {...}
这显示为成员下拉列表中的全局成员:
void func(int blah)
{
...
}
这个编译,但旧式不会出现在全球范围内 会员下拉:
void func(blah)
int blah;
{
...
}
我正在尝试使用新的“调用图”功能 分析代码,但因为我们的大多数遗留代码都使用了 旧式的函数参数,那些函数都没有 被认可的不是全球会员,因此也是如此 没有出现在“调用图表”中。
有没有办法让“调用图”分析过程 旧式函数声明是否正确?
答案 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样式。