Ora*C PCC-S-02201,遇到符号;L";当预期出现以下情况之一时:
使用cygwin在windows中运行Pro*C时出现此问题Ora*C PCC-S-02201,遇到符号;L";当预期出现以下情况之一时:,c,gcc,oracle10g,cygwin,C,Gcc,Oracle10g,Cygwin,使用cygwin在windows中运行Pro*C时出现此问题 Syntax error at line 104, column 31, file C:\cygwin\usr\include\machine/_default_types.h: Error at line 104, column 31 in file C:\cygwin\usr\include\machine/_default_types.h #elif defined(LLONG_MAX) && (LLONG_M
Syntax error at line 104, column 31, file C:\cygwin\usr\include\machine/_default_types.h:
Error at line 104, column 31 in file C:\cygwin\usr\include\machine/_default_types.h
#elif defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff)
..............................1
PCC-S-02201, Encountered the symbol "L" when expecting one of the following:
config pcscfg.cfg文件如下所示:
sys_include=
(C:\cygwin\usr\include,C:\Oracle\product\10.2.0\client_1\precomp\public,C:\cygwin\usr\include\sys,C:\cygwin\lib\gcc\i686-pc-cygwin\4.5.3\include)
ltype=short
define=(ORASTDARG)
code=kr_c
parse=partial
谢谢 考虑使用
#ifdef ORA_PROC
#include <apparently_evil_include_file.h>
#endif
#ifdef ORA#u PROC
#包括。考虑使用
#ifdef ORA_PROC
#include <apparently_evil_include_file.h>
#endif
#ifdef ORA#u PROC
#包括。警告:猜测随之而来。
它抱怨的代码,文件\u default\u types.h
第104行第31列,是:
#elif defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff)
^ column 31
LLONG\U MAX
在
中定义。关于Cygwin,定义如下:
#define LLONG_MAX __LONG_LONG_MAX__
指的是:
#ifndef __LONG_LONG_MAX__
#define __LONG_LONG_MAX__ 9223372036854775807LL
#endif
整型常量的类型long
和LL
后缀long
是C99中的一项新功能。在C99之前的C中(除非它作为扩展支持),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
是公认的选项。试试看
或者错误来自Ora*C调用的C编译器?你用的是什么C编译器?如果不是gcc,您可以将其配置为使用gcc吗?警告:推测如下。
它抱怨的代码,文件\u default\u types.h
第104行第31列,是:
#elif defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff)
^ column 31
LLONG\U MAX
在
中定义。关于Cygwin,定义如下:
#define LLONG_MAX __LONG_LONG_MAX__
指的是:
#ifndef __LONG_LONG_MAX__
#define __LONG_LONG_MAX__ 9223372036854775807LL
#endif
整型常量的类型long
和LL
后缀long
是C99中的一项新功能。在C99之前的C中(除非它作为扩展支持),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
是公认的选项。试试看
或者错误来自Ora*C调用的C编译器?你用的是什么C编译器?如果它不是gcc,您可以将其配置为使用gcc吗?尝试添加一对括号。我将在何处添加括号?在定义之前和下线:#elif(defined(LLONG_MAX)&&(LLONG_MAX>0x7fffff))
您还可以尝试删除LLONG_MAX>0x7fffff周围的括号。另外:检查前一行。可能是\r\n+反斜杠。谢谢,但它不起作用…此文件是gcc编译器库中的_default_types.h,因此我怀疑我必须对这些库文件进行任何更改…可能与Pro*C有关?我猜Pro*C确实有问题(Oracle+Microsoft+C:=坏组合)。顺便说一句:您可以查看头文件而不影响库。如果你知道自己在做什么,你甚至可以编辑它们。这是一个新的安装吗?尝试添加一对括号。在定义之前和下线处,我将在哪里添加括号:#elif(已定义(LLONG_MAX)&&(LLONG_MAX>0x7fffffff))
您还可以尝试删除LLONG_MAX>0x7FFFFF周围的括号。另外:检查前一行。可能是\r\n+反斜杠。谢谢,但它不起作用…此文件是gcc编译器库中的_default_types.h,因此我怀疑我必须对这些库文件进行任何更改…可能与Pro*C有关?我猜Pro*C确实有问题(Oracle+Microsoft+C:=坏组合)。顺便说一句:您可以查看头文件而不影响库。如果你知道自己在做什么,你甚至可以编辑它们。这是新安装的吗?OraC和ProC是一回事吗?OraC不是一回事。ProC是Oracle附带的一个预处理器,它从.pc文件中读取数据,并用一组执行实际工作的结构和函数调用替换嵌入式sql。输出文件通常是.c文件。然后,该.c文件由本机编译器编译,并与一组特定的Oracle库链接。错误消息中的PCC将其标识为Pro*c过程。OraC和ProC是同一件事吗?OraC不是一件事。ProC是Oracle附带的一个预处理器,它从.pc文件中读取数据,并用一组执行实际工作的结构和函数调用替换嵌入式sql。输出文件通常是.c文件。然后,该.c文件由本机编译器编译,并与一组特定的Oracle库链接