Я использую 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 build выглядит так:
proc code=cpp parse=partial 'include=(<list-of-comma-separated-include-folder-names>)' xyz.pc
Но, когда я компилирую, используя Pro * C Compiler, используя code=cpp
, как в proc code=cpp
. , , Я получаю ошибку, как указано ниже:
Pro*C/C++: Release 12.2.0.1.0 - Production on Thu Nov 8 05:36:56 2018
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
System default option values taken from: /app/oracle/product/12c/precomp/admin/pcscfg.cfg
Syntax error at line 64, column 2, file xyz.pc:
Error at line 64, column 2 in file xyz.pc
XYZ() {
.1
PCC-S-02201, Encountered the symbol "XYZ" when expecting one of the following:
} char, const, double, enum, float, int, long, ulong_varchar,
OCIBFileLocator OCIBlobLocator, OCIClobLocator, OCIDateTime,
OCIExtProcContext, OCIInterval, OCIRowid, OCIDate, OCINumber,
OCIRaw, OCIString, short, signed, sql_context, sql_cursor,
struct, union, unsigned, utext, uvarchar, varchar, void,
volatile, a typedef name,
Syntax error at line 67, column 15, filexyz.pc
XYZ(const XYZ& src) {
..............1
PCC-S-02201, Encountered the symbol "&" when expecting one of the following:
, ( ) [
Error at line 0, column 0 in file xyz.pc
PCC-F-02102, Fatal error while doing C preprocessing
Мне нужно использовать структуру C ++ с конструктором и конструктором копирования, чтобы позаботиться об инициализации, но чтобы компилятор Pro * C принял это?
Следующее объявление разрешено, но мне нужно использовать конструкторы для инициализации:
EXEC SQL BEGIN DECLARE SECTION;
struct XYZ {
int adata;
};
struct XYZ axyz[10];
EXEC SQL END DECLARE SECTION;