私は変数を宣言するところでsplintを無視する方法を知っていますか?私の変数を宣言する場所でsplintを無視させるにはどうしたらいいですか?
私は 、古い学校cは、すべての機能に始まり、右 で変数を宣言することを示していますことを知っているが、私は、私はそれらを使用する場所に近いものを宣言したいと悪い人ですので、。 良い例はint iを入れることです。 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 intを移動したいのは、非常に簡単な例を見てみましょう。 1つの行、 または{}を宣言とforループの周りに置くことができます。
これで質問には、どうすればこのチェックを無効にできますか? しかし、他の小切手は元気?
おかげヨハン
注1:私はすでに第二のような防衛、 とvalgrindのオフ最初の行としてGCC警告を(下記参照)を使用します。 しかし、私は私の愚かさ;-) を制御することができ、物事の私のリストに副木を追加することを考えている。しかし、このチェックは単なる迷惑です、
gccの警告は、私が使用します。 -Wall -W -Wextra -Wconversion - Wshadow -Wcast-qual -Wwrite-strings -Werror
注2: 私は、この悪い動作から来る可能性のある移植性の問題について知っています。 しかし、このタイプの宣言を検索するために上下に移動する必要がなく、可読性が向上すると感じています(これは別のスレッドで議論できます)。
更新: 少しより多くの情報、私は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.)
そして、これは私が前に考えていなかった2つの以上の質問を開きます。
「現在の値で冗長」、現在の値は何ですか?
なぜそれは解析エラーであり、警告ではありませんか?
更新:: この問題をサポートするためのパッチスプリントに働かがあり、 私はこれを試していないが、まだ私はそれが解決策だと思います。
あなたはそれにいる間に、intステートメントを宣言する必要があります。 – starblue
迷惑な警告、またはパーサーエラーが発生していますか? –
これはsplintを破る "int"と "i"の間のスペースですか? – Johan