您知道如何使夹板忽略声明变量的位置吗?

我知道老派c告诉您直接在
从每个功能开始
但是由于我是一个坏人,所以我喜欢在使用它们的地方声明它们。
一个很好的例子是把我放在第一个。就在for(i = 0; ...)之前。

让我们举一个非常简单的例子

#include  <stdio.h>
int main()
{
    printf("Hello splint test\n");

    int i;
    for(i=5;i>0;i--)
    {
        printf("%2d...\n",i);
    }

    return 0;
}

在这里,夹板和大多数旧的C编译器都希望将其移动到i;上一行
或将{}放在声明和for循环的周围。

现在问题是,如何关闭此检查?
但是保留其他好的检查吗?

谢谢
约翰

注意1:我已经使用gcc警告(见下文)作为防御的第一行,
valgrind是第二个。
但是我正在考虑将夹板添加到可以控制我的愚蠢行为的列表中;-)
但是这张支票真烦人,

我使用的gcc警告:
-Wall -W -Wextra -Wconversion -Wshadow -Wcast-qual -Wwrite-strings -Werror

笔记2:
我知道这种不良行为可能会带来潜在的可移植性问题。
但是我觉得它提高了可读性,也不需要向上或向下跳来搜索这种类型的声明更有值(value)(这可以在另一个线程中讨论)。

更新:
更多信息,我将上面的代码放在了一个名为main.c的文件中。
使用的平台是Ubuntu 8.04,并使用gvim作为编辑器,
这是运行时夹板的输出:
splint +gnuextensions main.c
Splint 3.1.1 --- 03 Nov 2006

Command Line: Setting +gnuextensions redundant with current value
main.c:8:8: Parse Error. (For help on parse errors, see splint -help
                 parseerrors.)

这就提出了另外两个我以前没有考虑过的问题。
  • “具有当前值的冗余”,当前值是多少?
  • 为什么它是解析错误而不是警告?


  • 更新::
    有可能修补夹板来支持此问题,
    我还没有尝试过,但是我认为这是解决方案。

    最佳答案

    这是一个补丁:
    http://www.cs.virginia.edu/pipermail/splint-discuss/attachments/20080718/52cc25f6/attachment.obj

    如果您位于splint/src目录中,则应该能够通过补丁-p2来提供该文件,然后重新构建它。

    那是从这封电子邮件:
    http://www.cs.virginia.edu/pipermail/splint-discuss/2008-July/001190.html

    (很抱歉在此间隔。)

    您最终会发现,如果您遵循链接到的starblue线程,但我想我会为您跳到最后。

    不幸的是,现在夹板似乎没有维护人员。如果我不那么忙,我会考虑加倍努力。

    jack

    关于c - 如何使夹板忽略我在哪里声明变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/669023/

    10-13 08:59