0

splint と mingw がインストールされた状態で、debian linux の実際の安定版を実行しています。splint で C コード (mingw でコンパイルする必要があります) をチェックしたいです。mingw-includes を追加するだけでは実行できません。私はGNUと i686を定義しようとしましたが、もっと必要だと確信しています。さらに何を定義または含める必要がありますか?

ローンからアイデアを試してみた結果、 で問題が発生しました__builtin_va_list

Splint 3.1.2 --- 20 Feb 2009
/usr/i686-w64-mingw32/include/vadefs.h:24:43: Parse Error:
    Suspect missing struct or union keyword: __builtin_va_list :
    int. (For help on parse errors, see splint -help parseerrors.)
*** Cannot continue.

面白いことに、インクルード フォルダーで再帰的な grep を使用しても、not の定義が見つかりません。私は間違って探していますか?それを(ベンジャロビン
から) そのように定義することで、エラーに遭遇しました-D__builtin_va_list=va_list

Splint 3.1.2 --- 20 Feb 2009

/home/ebelingb/.splintrc:229:1: Setting -stats redundant with current value
/home/ebelingb/.splintrc:229:1: Setting -showsummary redundant with current
                                   value

/usr/i686-w64-mingw32/include/winnt.h:2390:15:
    Parse Error. (For help on parse errors, see splint -help parseerrors.)
*** Cannot continue.

+trytorecover でも回復できませんでした。

winnt.h (および隣接) からの行は次のとおりです。

2388    typedef struct _EXCEPTION_POINTERS {
2389      PEXCEPTION_RECORD ExceptionRecord;
2390      PCONTEXT ContextRecord;
2391    } EXCEPTION_POINTERS,*PEXCEPTION_POINTERS;

奇妙ですね。

このスレッドにはそれ以上の回答が得られないので、この最小限の機能しない例で
動機を 与えます:test.c

#include <windows.h>
#include <stdio.h>
#include <time.h>
#define LOGFILEFORMAT "C:\\CBM\\log\\%Y%m%d.log"
#define LOGTIMESTAMPFORMAT "%Y-%m-%d %H:%M:%S"
int main() /*int argc,char **argv*/{
Sleep(1234);
    return (0);
}

と私.splintrc

-I/usr/lib/gcc/i686-w64-mingw32/4.6/include
-I/usr/lib/gcc/i686-w64-mingw32/4.6/include-fixed
-I/usr/i686-w64-mingw32/include

簡単なコマンドsplint test.cは失敗します:

Splint 3.1.2 --- 20 Feb 2009

/usr/i686-w64-mingw32/include/_mingw.h:480:29: Parse Error:
    Suspect missing struct or union keyword: __int64 :
    long int. (For help on parse errors, see splint -help parseerrors.)
*** Cannot continue.

繰り返しますが、セットアップ方法がわかりません。上記のインクルードはi686-w64-mingw32-gcc、 で正常に実行されるコンパイラの前処理呼び出しの結果test.cです。

4

1 に答える 1