Предупреждение: предположение следует.
Код, на который он жалуется, строка 104, столбец 31 в файле _default_types.h
:
#elif defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff)
^ column 31
LLONG_MAX
определяется в <limits.h>
. На Cygwin определение:
#define LLONG_MAX __LONG_LONG_MAX__
что относится к этому:
#ifndef __LONG_LONG_MAX__
#define __LONG_LONG_MAX__ 9223372036854775807LL
#endif
Тип long long
и суффикс LL
для целочисленных констант long long
являются новой функцией в C99. В C до C99 (если это не поддерживается как расширение), 9223372036854775807LL
будет синтаксической ошибкой. Я могу представить, что парсер может интерпретировать его как синтаксически допустимую константу 9223372036854775807L
, за которой следует L
(На самом деле это неверная интерпретация, но в любом случае это синтаксическая ошибка.)
Я не использовал Ora * C, но я предполагаю, что он должен анализировать свой входной код, который представляет собой комбинацию C и SQL, для получения чистого вывода C. (Это правильно?) Если синтаксический анализатор Ora * C не понимает тип long long
или литерал ...LL
, это может привести к типу ошибки, которую вы видите.
Что-то, что действительно вызывает мои подозрения, это строка в вашем pcscfg.cfg
файле:
code=kr_c
Это, вероятно, говорит Ora * C обрабатывать свой ввод как стиль кода K & R (т.е. предстандартный) C-кода. Проконсультируйтесь с вашей документацией и посмотрите, есть ли возможность сообщить ему, чтобы он обрабатывал код C99, или хотя бы что-то более современное, чем K & R C.
Эта веб-страница предполагает, что code=ansi_c
является опознанным вариантом. Попробуйте это.
Или ошибка исходит от компилятора C, который вызывается Ora * C? Какой компилятор C вы используете? Если это не gcc, можете ли вы настроить его на использование gcc?