关于旋风的问题

时间:2010-08-31 20:40:22

标签: visual-studio

我已阅读on Wikipedia Cyclone编程语言是C编程语言的安全方言,因此请考虑以下C代码。

int strlen(const char *s)
{
    int iter = 0;
    if (s == NULL) return 0;
    while (s[iter] != '\0') {
        iter++;
    }
    return iter;
}

此函数假定传入的字符串由NUL('\ 0')终止。 但是如果我们传递这样的字符串,

char buf[] = {'h','e','l','l','o','!'}

它会导致strlen遍历不一定与字符串s相关联的内存。所以Cyclone

中有另一个版本的代码
int strlen(const char ? s)
{
    int iter, n = s.size;
    if (s == NULL) return 0;
    for (iter = 0; iter < n; iter++, s++) {
       if (*s == '\0') return iter;
    }
    return n;
}

我可以在Visual Studio中使用Cyclone,还是必须下载新的编译器?

2 个答案:

答案 0 :(得分:3)

您需要Cyclone。它也是编译器的名称。 Cyclone编译器的源代码为here。根据文档,Cyclone编译器只能用GCC编译。检查this以编译Cyclone编译器。

如果为* .cyc文件提供custom rules,则可以在Visual Studio中使用它。这样您就可以将IDE用作更好的文本编辑器。对于语法高亮和样式,将* .cyc分配给C语言扩展列表。

答案 1 :(得分:2)

您可以为具有特定文件扩展名的文件运行自定义工具。有关如何设置自定义生成规则is here的MSDN Library文章。请注意,这在VS2010中已经非常破碎了。