이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 54.4. 기타 코딩 토토 캔버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

53.4. 기타 코딩 사설 토토 사이트

C 표준

코드 입력포스트그레SQLC89 표준에서 사용할 수 있는 언어 기능에만 의존해야 합니다. 이는 적합한 C89 컴파일러가 최소한 몇 가지 플랫폼 종속 부분을 제외하고 postgres를 컴파일할 수 있어야 함을 의미합니다. 대체 기능이 제공되는 경우 C 표준의 이후 개정판 기능 또는 컴파일러 관련 기능을 사용할 수 있습니다.

예를 들어정적 인라인그리고_Static_assert()C 표준의 최신 개정판에 속하더라도 현재 사용됩니다. 사용할 수 없는 경우 인라인 없이 함수를 정의하고 동일한 검사를 수행하지만 다소 비밀스러운 메시지를 내보내는 C89 호환 대체품을 사용합니다.

함수 유사 매크로 및 인라인 함수

둘 다, 인수가 있는 매크로와정적 인라인함수를 사설 토토 사이트할 수 있습니다. 매크로로 작성할 때 다중 평가 위험이 있는 경우 후자가 더 좋습니다(예:

#define Max(x, y) ((x)  (y) ? (x) : (y))

또는 매크로가 매우 긴 경우. 다른 경우에는 매크로만 사용하거나 최소한 더 쉽게 사용할 수 있습니다. 예를 들어 다양한 유형의 표현식을 매크로에 전달해야 하기 때문입니다.

인라인 함수의 정의가 백엔드의 일부로만 사설 토토 사이트할 수 있는 기호(예: 변수, 함수)를 참조하는 경우 프런트엔드 코드에 포함되면 함수가 표시되지 않을 수 있습니다.

#ifndef 프론트엔드
정적 인라인 MemoryContext
MemoryContextSwitchTo(MemoryContext 컨텍스트)

    MemoryContext old = CurrentMemoryContext;

    CurrentMemoryContext = 컨텍스트;
    늙어 돌아가다;

이 예에서는CurrentMemoryContext10562_10656#ifndef 프론트엔드. 이 사설 토토 사이트은 일부 컴파일러가 함수가 사용되지 않는 경우에도 인라인 함수에 포함된 기호에 대한 참조를 생성하기 때문에 존재합니다.

신호 처리기 작성

신호 처리기 코드 내에서 실행하기에 적합하려면 매우 신중하게 작성해야 합니다. 근본적인 문제는 차단되지 않는 한 신호 처리기가 언제든지 코드를 중단할 수 있다는 것입니다. 신호 처리기 내부의 코드가 외부 코드와 동일한 상태를 사용하면 혼란이 발생할 수 있습니다. 예를 들어, 신호 처리기가 중단된 코드에 이미 보유된 잠금을 획득하려고 시도하는 경우 어떤 일이 발생하는지 생각해 보세요.

신호 처리기의 특수 배열 코드를 금지하면 비동기 신호 안전 함수(POSIX에 정의된 대로)와 액세스 변수 유형만 호출할 수 있습니다.휘발성 sig_atomic_t. 몇 가지 기능포스트그레스또한 신호가 안전한 것으로 간주됩니다. 중요한 것은SetLatch().

대부분의 경우 신호 처리기는 신호가 도착했음을 기록하고 래치를 사용하여 처리기 외부에서 실행되는 코드를 깨우는 것 이상을 수행해야 합니다. 이러한 핸들러의 예는 다음과 같습니다.

정적 공허
handler_sighup(SIGNAL_ARGS)

    int save_errno = errno;

    got_SIGHUP = 사실;
    SetLatch(MyLatch);

    errno = save_errno;

errno다음 이유로 인해 저장 및 복원됩니다.SetLatch()변경될 수도 있습니다. 완료되지 않은 경우 현재 검사 중인 코드가 중단됩니다.errno잘못된 값이 표시될 수 있습니다.