다음을 통해 공유


부록 B 이식성 문제

이 절은 정보 제공입니다.

B.1 일반

이 부록은 이 사양에 표시되는 이식성에 대한 몇 가지 정보를 수집합니다.

B.2 정의되지 않은 동작

동작은 다음과 같은 상황에서 정의되지 않습니다.

  1. 인터페이스 메서드 INotifyCompletion.OnCompleted 의 awaiter 구현 시 바깥쪽 비동기 함수의 동작으로 ICriticalNotifyCompletion.UnsafeOnCompleted 인해 재개 대리자가 한 번만 호출되지 않습니다(§12.9.8.4).
  2. 포인터를 참조 또는 출력 매개 변수로 전달(§23.3).
  3. 한 포인터 형식을 다른 포인터 형식으로 변환한 결과를 역참조하는 경우 결과 포인터가 뾰족한 형식에 대해 올바르게 정렬되지 않습니다. (§23.5.1).
  4. 단항 * 연산자가 잘못된 값을 포함하는 포인터에 적용되는 경우(§23.6.2).
  5. 포인터가 바깥쪽 요소(§23.6.4)에 액세스하기 위해 아래 첨자인 경우
  6. 고정 포인터를 통해 관리되는 형식의 개체 수정(§23.7).
  7. (§12.8.21)에 의해 stackalloc 새로 할당된 메모리의 내용입니다.
  8. (§12.8.21)를 사용하여 stackalloc음수의 항목을 할당하려고 합니다.
  9. 값 인수가 있는 입력 매개 변수의 암시적 동적 변환(§10.2.10)(§12.6.4.2)입니다.

B.3 구현 정의 동작

이 하위 클래스에 나열된 각 영역에서 선택한 동작을 문서화하려면 준수 구현이 필요합니다. 구현 정의는 다음과 같습니다.

  1. 컴파일 단위에서 유니코드 NULL 문자(U+0000)의 처리입니다. (§6.1)
  2. 정규화 양식 C에 없는 식별자가 발견될 때의 동작입니다. (§6.4.3)
  3. PP_Line_Indicator허용되는 최대값입니다Decimal_Digit+. (§6.5.8)
  4. #pragma 지시문의 pp_pragma 텍스트있는 input_characters 해석입니다. (§6.5.10)
  5. 애플리케이션을 시작하기 전에 호스트 환경에서 전달한 Main 애플리케이션 매개 변수의 값입니다. (§7.1)
  6. 프로그램이 클래스 라이브러리로 컴파일되는지 또는 애플리케이션으로 컴파일되는지를 결정하는 메커니즘입니다. (§7.1)
  7. 애플리케이션 도메인을 만들고 소멸하기 위해 구현에서 사용하는 정책 또는 메커니즘입니다. (§7.1)
  8. 예외로 인해 유효 진입점 메서드가 종료되는 경우 종료 코드입니다. (§7.2)
  9. 종료자가 애플리케이션 종료의 일부로 실행되는지 여부입니다. (§7.2)
  10. API에서 종료자를 두 번 이상 실행할 수 있는지 여부입니다. (§7.9)
  11. 종료자가 애플리케이션 종료의 일부로 실행되는지 여부입니다. (§7.9)
  12. 메서드에 대한 요구 사항을 초과하여 Expression<TDelegate> 제공하는 API 표면입니다 Compile . (§8.6)
  13. 익명 함수가 식 트리로 변환되는 경우 식 트리의 정확한 구조와 이를 만드는 정확한 프로세스입니다. (§10.7.3)
  14. 컴파일 타임에 호환되는 대리자 형식으로의 변환이 실패할 수 있는 이유입니다. (§10.7.3)
  15. 크기 0의 스택 할당을 만들 때 반환되는 값입니다. (§12.8.21)
  16. System.ArithmeticException 정수 나누기의 컨텍스트 및 왼쪽 피연산자에서 최대 음 long int 수 또는 값이고 오른쪽 피연산–1자는 왼쪽 피연산자의 unchecked 결과 값으로 인해 오버플로가 throw되거나 오버플로가 보고되지 않습니다. (§12.10.3)
  17. System.ArithmeticException 소수점 나머지 작업을 수행할 때 (또는 해당 하위 클래스)가 throw되는 경우 (§12.10.4)
  18. 스레드에 예외 처리기가 없고 스레드 자체가 종료되는 경우 스레드 종료의 영향입니다. (§13.10.6)
  19. 외부 메서드에 대한 연결을 달성하는 메커니즘입니다. (§15.6.8)
  20. 예외에 대해 일치하는 catch 절을 찾을 수 없는 경우 스레드 종료의 영향과 스레드를 처음 시작한 코드에 도달합니다. (§21.4).
  21. 실행 환경에서는 C# 프로그램의 실행에 영향을 주는 추가 특성을 제공할 수 있습니다. (§22.5.1)
  22. 포인터와 정수 간의 매핑입니다. (§23.5.1)
  23. 단항 * 연산자를 포인터에 적용하는 효과입니다 null . (§23.6.2)
  24. 포인터 산술 연산이 포인터 형식의 도메인을 오버플로할 때의 동작입니다. (§23.6.6, §23.6.7)
  25. 미리 정의하지 않은 값 형식에 대한 연산자의 sizeof 결과입니다. (§23.6.9)
  26. 배열 식이 있거나 배열에 fixed 요소가 0인 경우 문의 동작입니다 null . (§23.7)
  27. 문자열 식이 .인 fixed 경우 문의 동작입니다 null. (§23.7)

B.4 지정되지 않은 동작

  1. 개체에 대한 종료자(있는 경우)가 실행되는 시간이며, 해당 개체가 종료될 수 있게 되면(§7.9)
  2. (§8.3.9)의 true 표현입니다.
  3. 컨텍스트에서 범위 외 값 또는 값을 float 정수 형식 unchecked 으로 변환할 때의 결과 값입니다(§10.3.2double).
  4. anonymous_method_expression 생성된 대리자의 정확한 대상 개체 및 대상 메서드(§10.7.2)가 포함됩니다.
  5. 안전하지 않은 컨텍스트(§12.8.16.5)를 제외한 배열의 레이아웃입니다.
  6. lambda_expression 또는 anonymous_method (§12.19.3)의 평가 및 호출 이외의 익명 함수 블록을 실행할 수 있는 방법이 있는지 여부입니다.
  7. 정적 필드 초기화의 정확한 타이밍(§15.5.6.2)입니다.
  8. 열거자 개체가 실행 중일 때 호출 MoveNext 한 결과입니다(§15.14.5.2).
  9. 열거자 개체가 이전, 실행 중 또는 이후 상태(§15.14.5.3)에 있을 때 액세스 Current 한 결과입니다.
  10. 열거자 개체가 실행 중 상태일 때 호출 Dispose 한 결과입니다(§15.14.5.4).
  11. 여러 부분으로 선언된 형식의 특성은 각 파트의 특성을 지정되지 않은 순서로 결합하여 결정됩니다(§22.3).
  12. 멤버가 구조체로 압축되는 순서입니다(§23.6.9).
  13. 종료자 실행 중에 예외가 발생하고 예외가 catch되지 않습니다(§21.4).
  14. 둘 이상의 멤버가 일치하는 경우(§18.6.5)의 I.M구현인 멤버입니다.

B.5 기타 문제

  1. 부동 소수점 식 계산의 정확한 결과는 구현이 필요한 것보다 더 큰 범위 및/또는 정밀도를 사용하여 이러한 식을 평가할 수 있기 때문에 구현마다 다를 수 있습니다(§8.3.7).
  2. CLI는 다른 프로그래밍 언어와의 호환성을 위해 특정 서명을 예약합니다(§15.3.10).

정보 텍스트의 끝입니다.