Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用Pro*C,如何使用C++;带构造函数的struct,复制EXEC SQL BEGIN DECLARE节中的构造函数_C++_Oracle_Oracle12c_Oracle Pro C - Fatal编程技术网

C++ 使用Pro*C,如何使用C++;带构造函数的struct,复制EXEC SQL BEGIN DECLARE节中的构造函数

C++ 使用Pro*C,如何使用C++;带构造函数的struct,复制EXEC SQL BEGIN DECLARE节中的构造函数,c++,oracle,oracle12c,oracle-pro-c,C++,Oracle,Oracle12c,Oracle Pro C,我使用的是Pro*C版本12.2.0.1.0。 要在SQL INSERT语句中使用主机数组,我将使用如下结构数组: EXEC SQL BEGIN DECLARE SECTION; struct XYZ { int adata; XYZ() { this->adata = 0; } XYZ(const XYZ& src) { this->adata = src.adata; } XYZ& o

我使用的是Pro*C版本12.2.0.1.0。 要在SQL INSERT语句中使用主机数组,我将使用如下结构数组:

EXEC SQL BEGIN DECLARE SECTION;
struct XYZ {
    int adata;
    XYZ() {
        this->adata = 0;
    }
    XYZ(const XYZ& src) {
        this->adata = src.adata;
    }
    XYZ& operator =(const XYZ &src) {
        this->adata = src.adata;
        return *this;
    }
};
XYZ axyz[20];
EXEC SQL END DECLARE SECTION;
我的pro*c构建命令如下所示:

 proc code=cpp parse=partial 'include=(<list-of-comma-separated-include-folder-names>)' xyz.pc
<>我需要使用C++结构体和构造函数和复制构造函数来维护初始化,但是要得到PRO*C编译器接受吗? 允许使用以下声明,但我需要使用构造函数进行初始化:

EXEC SQL BEGIN DECLARE SECTION;
struct XYZ {
        int adata;
};
struct XYZ axyz[10];
EXEC SQL END DECLARE SECTION;
每,“代码>代码= CPP < /code >选项告诉Pro C生成C++而不是C。它不提供您提供给它的代码。 您可以将“解析”模式改为<代码>部分<代码>,以允许您提供的代码中的C++语法。< /P> < >生成C++兼容代码时,解析选项必须是无选项或部分选项。如果<代码> PARSE =完整< /COD>,C解析器运行,它不理解代码中的C++构造,如类。 奇怪的是,当您提供
code=CPP
时,
PARSE=PARTIAL
应该是默认值,但这似乎不起作用,如错误所示:

执行C预处理时出现致命错误

…这应该是不可能的,因为完整的C预处理只应该在
PARSE=full
模式下进行。
也可能模糊的是,PRO+C++分析器被破坏了,它只接受在关键字“代码>代码>类< /代码>的类中的成员函数。我之所以这样说,是因为它通常是错误的概念,即用关键字<代码>结构> <代码>定义的类不能包含这样的东西——你可能会尝试调整你的代码来查看解析器作者是否犯了这个错误。< /P>我不是PRO*C专家,但是我觉得编译器好像不知道它应该处理C++,并且需要C代码。@StoryTeller,我正在使用proc编译器使用code=cpp标志。最好使用code=ansi或code=ansi_C作为程序标志。我看得越多,它就越奇怪。我也会仔细检查你的build命令,因为这应该可以工作。我已经用build命令编辑了我的qs,使用的build命令是:proc code=cpp parse=partial'include=()'xyz。pc@Dr.DebasishJana老实说,我不知道:但是,如果我在ExExcSQL开始声明部分之外使用结构声明,它会被编译,但是会在别处产生问题,在这里我用插入命令中的主机数组作为冒号,后面跟着数组名,也就是说:从这个写上去的AxyZuni线索?
EXEC SQL BEGIN DECLARE SECTION;
struct XYZ {
        int adata;
};
struct XYZ axyz[10];
EXEC SQL END DECLARE SECTION;