ECPG có một số hỗ trợ hạn chế cho các ứng kèo bóng đá c1 C ++. Phần này mô tả một số cảnh báo.
TheECPG
9397_9578.c
Tệp. Tệp tiêu đề khai báo của các chức năng thư viện được sử kèo bóng đá c1 bởi các khối ngôn ngữ c màECPG
Tạo được gói kèo bóng đá c1Bên ngoài "C" ...
Khối khi được sử kèo bóng đá c1 theo C ++, vì vậy chúng nên hoạt động liền mạch trong C ++.
Tuy nhiên, nói chung,ECPG
Bộ tiền xử lý chỉ hiểu C; Nó không xử lý kèo bóng đá c1 cú pháp đặc biệt và kèo bóng đá c1 từ dành riêng của ngôn ngữ C ++.
Một cách an toàn để sử kèo bóng đá c1 mã SQL được nhúng trong ứng kèo bóng đá c1 C ++ đang ẩn các cuộc gọi ECPG trong mô -đun C mà mã ứng kèo bóng đá c1 C ++ gọi vào để truy cập cơ sở dữ liệu và liên kết với phần còn lại của mã C ++. Nhìn thấyPhần 34.13.2về điều đó.
TheECPG
Bộ tiền xử lý hiểu phạm vi của kèo bóng đá c1 biến trong C. Trong ngôn ngữ C, điều này khá đơn giản vì phạm vi của kèo bóng đá c1 biến dựa trên kèo bóng đá c1 khối mã của chúng. Tuy nhiên, trong C ++, kèo bóng đá c1 biến thành viên lớp được tham chiếu trong một khối mã khác với vị trí được khai báo, vì vậyECPG
Bộ tiền xử lý sẽ không hiểu phạm vi của kèo bóng đá c1 biến thành viên lớp.
Ví dụ: kèo bóng đá c1 trường hợp sau,ECPG
Tiền xử lý không thể tìm thấy bất kỳ khai báo nào cho biếndbname
kèo bóng đá c1Test
Phương thức, vì vậy sẽ xảy ra lỗi.
Lớp TestCpp
Mã này sẽ dẫn đến một lỗi như thế này:
ECPG test_cpp.pgc
test_cpp.pgc: 28: Lỗi: biến "dbname" không được khai báo
Để tránh vấn đề phạm vi này,test
Phương pháp có thể được sửa đổi để sử kèo bóng đá c1 một biến cục bộ làm bộ nhớ trung gian. Nhưng cách tiếp cận này chỉ là một cách giải quyết kém, bởi vì nó tăng lên mã và giảm hiệu suất.
void testcpp :: test ()
Nếu bạn hiểu những hạn chế kỹ thuật này củaECPG
13247_13721
Ba loại tệp phải được tạo: một tệp C (*.pgc
), tệp tiêu đề và tệp C ++:
test_mod.pgc
#Một mô-đun tuyến phụ để thực thi kèo bóng đá c1 lệnh SQL được nhúng trong C. Nó sẽ được chuyển đổi thànhtest_mod.c
bởi bộ tiền xử lý.
#include "test_mod.h"
test_mod.h
#Tệp tiêu đề với kèo bóng đá c1 khai báo của kèo bóng đá c1 hàm trong mô -đun C (test_mod.pgc
). Nó được bao gồm bởitest_cpp.cpp
. Tệp này phải cóBên ngoài "C"
Khối xung quanh kèo bóng đá c1 khai báo, vì nó sẽ được liên kết từ mô -đun C ++.
#ifdef __cplusplus
test_cpp.cpp
#Mã chính cho ứng kèo bóng đá c1, bao gồmchính
thói quen và kèo bóng đá c1 ví dụ này, một lớp C ++.
#include "test_mod.h"
Để xây dựng ứng kèo bóng đá c1, hãy tiến hành như sau. Chuyển thànhtest_mod.pgc
thànhtest_mod.c
bằng cách chạyECPG
và tạotest_mod.o
bằng cách biên dịchtest_mod.c
Với trình biên dịch c:
ECPG -O test_mod.c test_mod.pgc
Tiếp theo, tạotest_cpp.o
bằng cách biên dịchtest_cpp.cpp
Với trình biên dịch C ++:
C ++ -C test_cpp.cpp -o test_cpp.o
Cuối cùng, liên kết kèo bóng đá c1 tệp đối tượng này,test_cpp.o
vàtest_mod.o
, thành một thực thi, sử kèo bóng đá c1 trình điều khiển trình biên dịch C ++:
C ++ test_cpp.o test_mod.o -lecpg -o test_cpp
Nếu bạn thấy bất cứ điều gì kèo bóng đá c1 tài liệu không chính xác, không phù hợpMẫu nàyĐể báo cáo vấn đề tài liệu.