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 / 9.0 / 8.4 / 8.3 / 8.2

9783_9819

Một số kèo bóng đá pháp xử lý có sẵn để sửa đổi cáchECPGPhân tích tiền xử lý và xử lý một tệp.

36.9.1. Bao gồm các tệp

Để đưa một tệp bên ngoài vào chương trình kèo bóng đá pháp nhúng của bạn, sử dụng:

EXEC kèo bóng đá pháp bao gồmFileName;
Exec kèo bóng đá pháp bao gồm <FileName;
EXEC kèo bóng đá pháp bao gồm "FileName";

Bộ tiền xử lý kèo bóng đá pháp nhúng sẽ tìm kiếm một tệp có tênFileName.h, tiền xử lý và bao gồm nó trong đầu ra C kết quả. Do đó, các câu lệnh kèo bóng đá pháp nhúng trong tệp đi kèm được xử lý chính xác.

TheECPGBộ tiền xử lý sẽ tìm kiếm một tệp tại một số thư mục theo thứ tự sau:

  • Thư mục hiện tại
  • /usr/local/bao gồm
  • PostgreSQL bao gồm thư mục, được xác định tại thời gian xây dựng (ví dụ:/usr/local/pgsql/bao gồm)
  • /usr/bao gồm

Nhưng khiEXEC kèo bóng đá pháp bao gồm "FileName"được sử dụng, chỉ tìm kiếm thư mục hiện tại.

Trong mỗi thư mục, bộ tiền xử lý trước tiên sẽ tìm tên tệp như đã đưa ra và nếu không tìm thấy sẽ tăng thêm.hđến tên tệp và thử lại (trừ khi tên tệp được chỉ định đã có hậu tố đó).

Lưu ý rằngEXEC kèo bóng đá pháp bao gồmkhông12374_12389

#include <FileName.h

Bởi vì tệp này sẽ không phải tuân theo tiền xử lý của kèo bóng đá pháp. Đương nhiên, bạn có thể tiếp tục sử dụng c#includeChỉ thị bao gồm các tệp tiêu đề khác.

Lưu ý

Tên tệp bao gồm nhạy cảm trường hợp, mặc dù phần còn lại củaEXEC kèo bóng đá pháp bao gồmLệnh tuân theo các quy tắc nhạy cảm trường hợp kèo bóng đá pháp thông thường.

36.9.2. Các chỉ thị xác định và hoàn tác

Tương tự như Chỉ thị#defineđược biết đến từ C, kèo bóng đá pháp nhúng có khái niệm tương tự:

EXEC kèo bóng đá pháp xác địnhtên;
Exec kèo bóng đá pháp xác địnhtên giá trị;

Vì vậy, bạn có thể xác định tên:

exec kèo bóng đá pháp xác định have_feature;

Và bạn cũng có thể xác định các hằng số:

EXEC kèo bóng đá pháp Xác định Mynumber 12;
Exec kèo bóng đá pháp xác định myString 'abc';

sử dụngUndef13818_13853

EXEC kèo bóng đá pháp Undef Mynumber;

Tất nhiên bạn có thể tiếp tục sử dụng các phiên bản C#define#undefTrong chương trình kèo bóng đá pháp nhúng của bạn. Sự khác biệt là nơi các giá trị xác định của bạn được đánh giá. Nếu bạn sử dụngexec kèo bóng đá pháp xác địnhsau đóECPGBộ tiền xử lý đánh giá các định nghĩa và thay thế các giá trị. Ví dụ: nếu bạn viết:

EXEC kèo bóng đá pháp Xác định Mynumber 12;
...
EXEC kèo bóng đá pháp Cập nhật tbl set col = mynumber;

sau đóECPGSẽ thay thế và trình biên dịch C của bạn sẽ không bao giờ thấy bất kỳ tên hoặc định danh nàoMynumber. Lưu ý rằng bạn không thể sử dụng#define14685_14840

Nếu nhiều tệp đầu vào được đặt tên trênECPGdòng lệnh của người tiền xử lý, các hiệu ứng củaEXEC kèo bóng đá pháp xác địnhEXEC kèo bóng đá pháp UNEFKhông mang theo các tệp: Mỗi tệp bắt đầu chỉ bằng các ký hiệu được xác định bởi-DChuyển sang dòng lệnh.

36.9.3. IFDEF, IFNDEF, ELIF, OTE và EXTIF Chỉ thị

Bạn có thể sử dụng các chỉ thị sau để biên dịch các phần mã có điều kiện:

EXEC kèo bóng đá pháp IFDEFtên;

Kiểm tra Atênvà xử lý các dòng tiếp theo nếutênđã được xác định quaEXEC kèo bóng đá pháp xác địnhtên.

EXEC kèo bóng đá pháp IFNDEFtên;

Kiểm tra Atênvà xử lý các dòng tiếp theo nếutênkhôngĐã được xác định quaexec kèo bóng đá pháp xác địnhtên.

EXEC kèo bóng đá pháp ELIFtên;

Bắt đầu một phần thay thế tùy chọn sau mộtEXEC kèo bóng đá pháp IFDEFtênhoặcEXEC kèo bóng đá pháp IFNDEFtênChỉ thị. Bất kỳ số nào củaElifPhần có thể xuất hiện. Các dòng sau mộtElifsẽ được xử lý nếutênđã được xác địnhKhông có phần trước đóIFDEF/IFNDEF...endifXây dựng đã được xử lý.

EXEC kèo bóng đá pháp khác;

Bắt đầu một phần thay thế cuối cùng, tùy chọn sau mộtEXEC kèo bóng đá pháp IFDEFtênhoặcEXEC kèo bóng đá pháp IFNDEFtênChỉ thị. Các dòng tiếp theo sẽ được xử lý nếu không có phần trước đóIFDEF/IFNDEF...endifXây dựng đã được xử lý.

EXEC kèo bóng đá pháp ENDIF;

kết thúcIFDEF/18106_18114...endifXây dựng. Các dòng tiếp theo được xử lý bình thường.

IFDEF/IFNDEF...endifCấu trúc có thể được lồng, sâu tới 127 cấp độ.

Ví dụ này sẽ biên dịch chính xác một trong baĐặt múi giờlệnh:

18564_18739

Gửi sửa

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không phù hợp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.