兄弟姐妹们,求助了

阿彪兄 2011-08-24 07:55:51
我以命令行预编译.pc文件时发生错误,以下是祥情,请问何故?
另外我想请问一下windows平台下以命令行的方式预编译.pc文件,是不是会直接产生.c/.cpp文件?


Microsoft Windows XP [Version 5.1.2600]

(C) Copyright 1985-2001 Microsoft Corp.



C:\Documents and Settings\acn_yibiao>cd C:\tmp\myworkspace\w



[color=#FF0000]C:\tmp\myworkspace\w>proc hhts120.pc



Pro*C/C++: Release 10.2.0.1.0 - Production on 星期三 8月 24 17:20:55 2011



Copyright (c) 1982, 2005, Oracle. All rights reserved.



系统默认选项值取自于: C:\oracle\product\10.2.0\db_1\precomp\admin\pcscfg.cfg



语法错误出现在48行,9列, 文件C:\Program Files\Microsoft Visual Studio 10.0\VC\inc

lude\vadefs.h:

错误发生在行48, 列9, 文件C:\Program Files\Microsoft Visual Studio 10.0\VC\includ

e\vadefs.

h

typedef _W64 unsigned int uintptr_t;

........1

PCC-S-02201, 出现符号 "__w64"在需要下列之一时:

auto, char, const,

double, enum, float, int, long, ulong_varchar,

OCIBFileLocator OCIBlobLocator, OCIClobLocator, OCIDateTime,

OCIExtProcContext, OCIInterval, OCIRowid, OCIDate, OCINumber,

OCIRaw, OCIString, register, short, signed, sql_context,

sql_cursor, static, struct, union, unsigned, utext, uvarchar,

varchar, void, volatile, a typedef name,



错误发生在行6, 列10, 文件hhts120.pc

#include <unistd.h>

.........1

PCC-S-02015, 无法打开 INCLUDE 文件

错误发生在行8, 列1, 文件hhts120.pc

EXEC SQL INCLUDE vsddb.h ;

1

PCC-S-02015, 无法打开 INCLUDE 文件

错误发生在行9, 列1, 文件hhts120.pc

EXEC SQL INCLUDE vsddom.h ;

1

PCC-S-02015, 无法打开 INCLUDE 文件

错误发生在行10, 列1, 文件hhts120.pc

EXEC SQL INCLUDE vsderr.h ;

1

PCC-S-02015, 无法打开 INCLUDE 文件

错误发生在行11, 列1, 文件hhts120.pc

EXEC SQL INCLUDE vsdutil.h;

1

PCC-S-02015, 无法打开 INCLUDE 文件

错误发生在行46, 列10, 文件hhts120.pc

#include "scn_func.h"

.........1

PCC-S-02015, 无法打开 INCLUDE 文件

错误发生在行0, 列0, 文件hhts120.pc

PCC-F-02102, C 预处理时, 发生严重错误



C:\tmp\myworkspace\w>[/color]

...全文
330 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jixingzhong 的回复:]
头文件路径,是不是没有设置好?
[/Quote]

支持版主
阿彪兄 2011-08-25
  • 打赏
  • 举报
回复
头文件方面我知道,我不知道的是以下信息(注意我没装vc6.0,我装的是vs2010):
C:\tmp\myworkspace\w>proc hhts120.pc
Pro*C/C++: Release 10.2.0.1.0 - Production on 星期三 8月 24 17:20:55 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
系统默认选项值取自于: C:\oracle\product\10.2.0\db_1\precomp\admin\pcscfg.cfg
语法错误出现在48行,9列, 文件C:\Program Files\Microsoft Visual Studio 10.0\VC\inc
lude\vadefs.h:
错误发生在行48, 列9, 文件C:\Program Files\Microsoft Visual Studio 10.0\VC\includ
e\vadefs.
h
typedef _W64 unsigned int uintptr_t;
........1
PCC-S-02201, 出现符号 "__w64"在需要下列之一时:
auto, char, const,
double, enum, float, int, long, ulong_varchar,
OCIBFileLocator OCIBlobLocator, OCIClobLocator, OCIDateTime,
OCIExtProcContext, OCIInterval, OCIRowid, OCIDate, OCINumber,
OCIRaw, OCIString, register, short, signed, sql_context,
sql_cursor, static, struct, union, unsigned, utext, uvarchar,
varchar, void, volatile, a typedef name,
jernymy 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jixingzhong 的回复:]
头文件路径,是不是没有设置好?
[/Quote]
看错误信息也感觉是
jixingzhong 2011-08-24
  • 打赏
  • 举报
回复
头文件路径,是不是没有设置好?
jackyjkchen 2011-08-24
  • 打赏
  • 举报
回复
jackyjkchen 2011-08-24
  • 打赏
  • 举报
回复
好像VC不能编译pc文件吧……用mingw试试,gcc for windows
至善者善之敌 2011-08-24
  • 打赏
  • 举报
回复
Microsoft C 和 C++ 编译器提供了用于预编译任何 C 或 C++ 代码(包括内联代码)的选项。利用此性能特性,可以编译稳定的代码体,将已编译状态的代码存储在文件中,以及在随后的编译中,将预编译的代码与仍在开发的代码结合起来。由于不需要重新编译稳定代码,因此后面每次编译的速度都要快一些。

预编译代码有助于在开发周期中缩短编译时间,特别是在以下情况中:

总是使用不经常改动的大型代码体。
程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。
用于创建预编译头文件的第一次编译所花费的时间比后面的编译稍长一些。通过包含预编译代码可以加快后面的编译速度。

C 和 C++ 程序都可以预编译。在 C++ 编程中,常见的做法是将类接口信息分别放到不同的头文件中。此后就可以将这些头文件包含在使用该类的程序中。通过预编译这些头文件,可以缩短程序的编译时间。

注意 尽管每个源文件只能使用一个预编译的头文件 (.pch),但在一个项目中可以使用多个 .pch 文件。

使用 Visual C++ 可以预编译任何 C 或 C++ 代码;并不仅限于预编译头文件。若要预编译头文件,请从以下方法中选择:

自动预编译
手动预编译
第一种方法快捷方便。第二种方法要求先进行规划,但如果预编译的是源代码而不是简单的头文件,则将大幅度提高编译速度。

自动预编译
如果希望编译器决定何时创建和使用预编译头,则使用自动预编译。

自动预编译头选项是 (/YX)。/YX 选项使编译器或者创建具有默认名 VCxy.pch 的预编译头(其中 xy 是编译器的主版本和次版本),或者使用名为 VCxy.pch 的预编译头(如果存在这样的预编译头)。也可以控制用 /Fp(指定预编译头文件名)选项创建或使用的预编译头的名称。

手动预编译
如果知道源文件使用一组通用的头文件但包含顺序不同,或者希望将源代码包含在预编译中,则使用手动预编译。

手动预编译头选项是 /Yc(创建预编译头文件)和 /Yu(使用预编译头文件)。使用 /Yc 选项创建预编译头。与可选的 hdrstop 杂注一起使用时,/Yc 允许对头文件和源代码都进行预编译。选择 /Yu 选项在现有编译中使用现有预编译头。还可以将 /Fp 选项与 /Yc 和 /Yu 选项一起使用,为预编译头提供可选名称。

生成 PCH 文件
可以通过非常简单的方法用一个 PCH 生成另一个 PCH。

cl -c -Yc "stuff.h " -Fplevel1.pch level1.cpp
cl -c -Yu "stuff.h " -Fplevel1.pch -Yc level2.cpp
level2.cpp 文件如下所示:

#include "stuff.h "
#include "morestuff.h "
#pragma hdrstop( "level2.pch ")
以下命令将生成 level2.pch,它可用于进一步的编译中:

cl -c -Yu "morestuff.h " -Fplevel2.pch mysource.cpp
请注意,只需将 #pragma hdrstop 指令放在生成另一个 PCH 的文件中;不必将其放在所有使用该 PCH 的 .cpp 文件中。使用 PCH 的文件可以在命令行中用名称指定 morestuff.h 文件(因此不必为使用它而编辑所有文件)。两种预编译代码的方法(手动或自动)都将结果预编译代码存储在预编译头中。

可以将 /YX 选项与 /Zi 或 /Z7 选项一起使用,为 CodeView 或 Visual C++ 调试器生成调试信息。

建议使用 /Zi 选项,除非需要 /Z7 来维护与 Microsoft C/C++ 7.0 版的兼容性。/Zi 选项将生成的调试信息放到程序数据库 (PDB) 中;PDB 可在调试过程中加快链接速度。/Yd 选项将所有调试信息放到使用预编译头创建的每一个对象文件中;除非与 /Z7 一起使用,否则此选项将被忽略。

下表总结了与 /YX 组合使用 /Zi、/Z7 和 /Yd 选项所得到的结果。

与 /YX、/Yc 或 /Yu 组合使用调试选项所得到的结果

选项 结果
/Zi 预编译头和源代码其余部分的调试信息都放置在具有 VCxy.pdb 默认名的程序数据库 (PDB) 中。
/Zi /Yd 忽略 /Yd。预编译头和源代码其余部分的调试信息都放置在具有 VCxy.pdb 默认名的 PDB 中。
/Z7 预编译头的调试信息用作所有使用预编译头创建的对象文件的缓存。
/Z7 /Yd 预编译头和源代码其余部分的调试信息都放置在使用预编译头创建的每个对象文件中。


以上摘自MSDN。
仙度瑞城 2011-08-24
  • 打赏
  • 举报
回复
不知道...帮楼主顶贴...等裤衩和星星来...

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧