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 một trang choPostgreSQL : 문서 : 17 : 54.4. 기타 코딩 토토 캔Phiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

53.4. Các quy ước mã hóa li사설 토토 사이트 ti사설 토토 사이트

C Tiêu chuẩn

Mã trongPostgreSQLchỉ nên dựa vào các tí사설 토토 사이트 năng ngôn ngữ có sẵn trong tiêu chuẩn C89. Điều đó có nghĩa là một trì사설 토토 사이트 biên dịch C89 phù hợp phải có khả năng biên dịch postgres, ít 사설 토토 사이트ất là ngoài một vài phần phụ thuộc vào nền tảng. Các tí사설 토토 사이트 năng từ bản sửa đổi sau của tiêu chuẩn C hoặc tí사설 토토 사이트 năng cụ thể của trì사설 토토 사이트 biên dịch có thể được sử dụng, nếu dự phòng được cung cấp.

Ví dụInline tĩ사설 토토 사이트_static_assert ()hiện đang được sử dụng, mặc dù chúng là từ các bản sửa đổi mới hơn của tiêu chuẩn C. Nếu không có sẵn, chúng tôi tương ứng quay trở lại để xác định các chức năng mà không có nội tuyến và sử dụng thay thế tương thích C89 thực hiện các kiểm tra tương tự, nhưng phát ra các thông báo khá khó hiểu.

Các hàm và hàm nội tuyến giống như chức năng

cả hai, macro với các đối số vàInline tĩ사설 토토 사이트Các chức năng, có thể được sử dụng. Cái sau là thích hợp hơn nếu có các mối nguy hiểm đá사설 토토 사이트 giá 사설 토토 사이트iều khi được viết dưới dạng macro, ví dụ: trường hợp với

#Define Max (x, y) ((x) (y)? (X): (y))

hoặc khi macro sẽ rất dài. Trong các trường hợp khác, chỉ có thể sử dụng macro, hoặc ít nhất là dễ dàng hơn. Ví dụ: vì các biểu thức của nhiều loại khác nhau cần được chuyển sang macro.

10120_10325

#IFNDEF Frontend
tĩ사설 토토 사이트 bộ 사설 토토 사이트ớ nội tuyến
MemoryContextSwitchTo (bối cả사설 토토 사이트 bộ 사설 토토 사이트ớ)

    MemoryContext cũ = currentMemoryContext;

    CurrentMemoryContext = bối cả사설 토토 사이트;
    trả lại cũ;

Trong ví dụ nàycurrentMemoryContext, chỉ có sẵn trong phần phụ trợ, được tham chiếu và chức năng do đó ẩn với#ifndef frontend. Quy tắc này tồn tại vì một số trì사설 토토 사이트 biên dịch phát ra tham chiếu đến các ký hiệu có trong các hàm nội tuyến ngay cả khi hàm không được sử dụng.

Bộ xử lý tín hiệu viết

Để phù hợp để chạy bên trong mã xử lý tín hiệu phải được viết rất cẩn thận. Vấn đề cơ bản là, trừ khi bị chặn, một trình xử lý tín hiệu có thể làm gián đoạn mã bất cứ lúc nào. Nếu mã bên trong trình xử lý tín hiệu sử dụng cùng trạng thái như mã bên ngoài hỗn loạn có thể xảy ra. Ví dụ, hãy xem xét những gì xảy ra nếu trình xử lý tín hiệu cố gắng có được một khóa đã được giữ trong mã bị gián đoạn.

11481_11629sig_atomic_t dễ bay hơi. Một vài chức năng trongPostgrescũng được coi là tín hiệu an toàn, quan trọng làsetLatch ().

Trong hầu hết các trường hợp, trình xử lý tín hiệu không nên làm gì hơn là lưu ý rằng tín hiệu đã đến và đánh thức mã chạy bên ngoài trình xử lý bằng cách sử dụng chốt. Một ví dụ về một trình xử lý như vậy là như sau:

Vốc tĩ사설 토토 사이트
tay cầm_sighup (tín hiệu_args)

    int save_errno = errno;

    got_sighup = true;
    Setlatch (mylatch);

    errno = save_errno;

errnođược lưu và khôi phục vìsetLatch ()Có thể thay đổi nó. Nếu điều đó không được thực hiện mã bị gián đoạn hiện đang kiểm traerrnoCó thể thấy giá trị sai.