Phiên bản được hỗ trợ:hiện tại(17)16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng kèo chấp bóng đá hôm nay nay trang chohiện tạiPhiên bản hoặc một trong kèo chấp bóng đá hôm nay phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

35.13.C ++Ứng kèo chấp bóng đá hôm nay

ECPG có một số hỗ trợ hạn chế cho các ứng kèo chấp bóng đá hôm nay C ++. Phần này mô tả một số cảnh báo.

TheECPG9839_10020.cTệp. Tệp tiêu đề khai báo của các chức năng thư viện được sử kèo chấp bóng đá hôm nay bởi các khối ngôn ngữ c màECPGTạo được gói trongBên ngoài "C" ...Khối khi được sử kèo chấp bóng đá hôm nay theo C ++, vì vậy chúng sẽ hoạt động liền mạch trong C ++.

Tuy nhiên, nói chung,ECPGBộ tiền xử lý chỉ hiểu C; Nó không xử lý kèo chấp bóng đá hôm nay cú pháp đặc biệt và kèo chấp bóng đá hôm nay từ dành riêng của ngôn ngữ C ++.

Một cách an toàn để sử kèo chấp bóng đá hôm nay mã SQL được nhúng trong ứng kèo chấp bóng đá hôm nay C ++ đang ẩn các cuộc gọi ECPG trong mô -đun C mà mã ứng kèo chấp bóng đá hôm nay C ++ gọi vào để truy cập cơ sở dữ liệu và liên kết cùng với phần còn lại của mã C ++. Nhìn thấyPhần 35.13.2về điều đó.

35.13.1. Phạm vi cho kèo chấp bóng đá hôm nay biến máy chủ

TheECPGTiền xử lý hiểu phạm vi của kèo chấp bóng đá hôm nay 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 chấp bóng đá hôm nay biến dựa trên kèo chấp bóng đá hôm nay khối mã của chúng. Tuy nhiên, trong C ++, kèo chấp bóng đá hôm nay 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ậyECPGBộ tiền xử lý sẽ không hiểu phạm vi của kèo chấp bóng đá hôm nay biến thành viên lớp.

Ví dụ: trong trường hợp sau,ECPGTiền xử lý không thể tìm thấy bất kỳ khai báo nào cho biếndbnameTrongTestPhương thức, vì vậy sẽ xảy ra lỗi.

Lớp TestCpp

Mã này sẽ dẫn đến kèo chấp bóng đá hôm nay lỗi như thế này:

ECPG test_cpp.pgctest_cpp.pgc: 28: Lỗi: biến "dbname" không được khai báo

Để tránh vấn đề phạm vi này,testPhương pháp có thể được sửa đổi để sử kèo chấp bóng đá hôm nay 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 ()

35.13.2. Phát triển ứng kèo chấp bóng đá hôm nay C ++ với mô -đun C bên ngoài

Nếu bạn hiểu những hạn chế kỹ thuật này củaECPGBộ tiền xử lý trong C ++, bạn có thể đi đến kết luận rằng liên kết các đối tượng C và các đối tượng C ++ ở giai đoạn liên kết để cho phép các ứng kèo chấp bóng đá hôm nay C ++ sử kèo chấp bóng đá hôm nay các tính năng ECPG có thể tốt hơn so với việc viết một số lệnh SQL nhúng trong mã C ++ trực tiếp. Phần này mô tả một cách để tách một số lệnh SQL nhúng khỏi mã ứng kèo chấp bóng đá hôm nay C ++ với một ví dụ đơn giản.

Ba loại tệp phải được tạo: kèo chấp bóng đá hôm nay 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 chấp bóng đá hôm nay lệnh SQL được nhúng trong C. Nó sẽ được chuyển đổi thànhtest_mod.cbởi bộ tiền xử lý.

#include "test_mod.h"
test_mod.h

Tệp tiêu đề với kèo chấp bóng đá hôm nay khai báo của kèo chấp bóng đá hôm nay 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 chấp bóng đá hôm nay 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 chấp bóng đá hôm nay, bao gồmchínhthói quen và trong ví dụ này, kèo chấp bóng đá hôm nay lớp C ++.

#include "test_mod.h"

Để xây dựng ứng kèo chấp bóng đá hôm nay, hãy tiến hành như sau. Chuyển thànhtest_mod.pgcthànhtest_mod.cbằng cách chạyECPGvà tạotest_mod.obằng cách biên dịchtest_mod.cVới trình biên dịch C:

ECPG -O test_mod.c test_mod.pgc

Tiếp theo, tạotest_cpp.obằng cách biên dịchtest_cpp.cppVớ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 chấp bóng đá hôm nay tệp đối tượng này,test_cpp.otest_mod.o, thành một thực thi, sử kèo chấp bóng đá hôm nay trình điều khiển trình biên dịch C ++:

C ++ test_cpp.o test_mod.o -lecpg -o test_cpp