Как использовать шину под Linux с mingw

Я использую стабильную версию Debian Linux с установленными шиной и mingw. Я хочу проверить свой код c (который мне нужно скомпилировать с помощью mingw, извините) с помощью шины. Простого добавления mingw-include недостаточно для запуска. Я попытался определить 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.

Самое смешное, что я не могу найти никакого определения для not - даже с рекурсивным grep для включаемых папок. Я неправильно ищу?
Определив его как -D__builtin_va_list=va_list (от benjarobin), я столкнулся с ошибкой

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.


person Bastian Ebeling    schedule 18.11.2013    source источник
comment
Splint не использует mingw или какой-либо другой компилятор. Сплинт используется как любой компилятор: splint main.c. Какие ошибки?   -  person benjarobin    schedule 18.11.2013
comment
@benjarobin - конечно, я это знаю - но каждый компилятор вносит свои определения и так далее. Таким образом, вам нужно сообщить этим определениям и включениям шину.   -  person Bastian Ebeling    schedule 19.11.2013
comment
Какую конкретную ошибку вы получаете без использования этого va_list определения?   -  person Ioan    schedule 20.11.2013
comment
@loan - я вставил вывод об ошибке в вопрос.   -  person Bastian Ebeling    schedule 21.11.2013


Ответы (1)


Вы можете получить хороший список определений препроцессора, используя пустой исходный файл C и запустив его через GCC/MinGW с желаемыми пользовательскими аргументами:

gcc -E -P -v -dD [optional arguments] blank.c

Обязательно используйте правильный компилятор для вашей цели. Вы можете перенаправить вывод в файл и передать оттуда любые определения, которые вам могут понадобиться, в шину.

person Ioan    schedule 18.11.2013
comment
Это, безусловно, отличный намек. Спасибо. Так печально - осталась одна ошибка: /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. не знаю, как решить эту проблему. - person Bastian Ebeling; 19.11.2013
comment
Добавить -D__builtin_va_list=va_list ? - person benjarobin; 19.11.2013
comment
Я уже пробовал это - только в результате еще одна ошибка. Я отредактирую пост, чтобы показать это. - person Bastian Ebeling; 19.11.2013