ct2a 예제

설상가상으로 두 개의 COM 개체는 텍스트 문자열에 대해 두 개의 서로 다른 문자 집합을 선호하는 두 개의 서로 다른 운영 체제를 실행하는 두 개의 서로 다른 컴퓨터에 상주할 수 있습니다. 예를 들어 Visual Basic에서 하나의 COM 개체를 작성하고 Windows XP 운영 체제에서 실행할 수 있습니다. IBM 메인프레임에서 실행되는 C++로 작성된 다른 COM 개체에 텍스트 문자열을 전달할 수 있습니다. 분명히 이기종 환경의 모든 COM 개체가 이해할 수 있는 표준 텍스트 데이터 형식이 필요합니다. 더 공격적인 암에서, MRI를 가진 추가 발판, CT 검사 또는 뼈 검사는 전립선암이 전립선의 주위에 지역을 넘어 퍼진 정도를 결정하기 위하여 행해질 수 있습니다. 예를 들면, 전립선 내의 수감된 암은 현지화한 전립선암으로 간주될 것이고 반면, 주변 지역으로 이동하기 시작한 암은 국부적으로 진행된 전립선암으로 간주될 것입니다. 전이성 질병에서, 전립선암은 전립선의 외부, 일반적으로 림프절에서 더 성장한다. 전립선암은 먼저 하복부와 골반에 있는 임파선으로 이동하는 경향이 있습니다. 안타깝게도 컴파일러 옵션(예: Windows XP 유니코드 빌드 또는 Windows CE 빌드)이 변경되면 이 컨텍스트가 변경될 수 있습니다. 따라서 이전에 문자열을 변환할 필요가 없었던 코드는 변환이 필요하거나 그 반대의 경우도 마찬가지입니다. 컴파일러 옵션을 변경할 때마다 모든 문자열 조작 코드를 다시 작성하지 않으려고 합니다. 따라서 ATL은 텍스트 문자열을 한 문자 집합에서 다른 문자로 변환하고 변환을 호출하는 컨텍스트에 민감한 여러 문자열 변환 매크로를 제공합니다. 예를 들면, 병리학자가 견본을 보고 Gleason 패턴 3를 일반적인 패턴으로 보고 그 때 희소한 Gleason 패턴 4를 보는 경우에, 그는 그 종양을 7 (3+4)이라고 칭할 것입니다.

모든 병리학자가 본 패턴 3이라면 암은 6 (3 +3)이라고 불립니다. 글리슨 합계의 범위는 6(3+3)에서 10(5+5)입니다. 글리슨 6은 가장 공격적인 암 유형이며, 글리슨 7은 중간 공격적이며 글리슨 8-10 암은 가장 공격적입니다. 일반적으로 글리슨 점수가 낮은 암은 덜 공격적이며 글리슨 점수가 높은 암은 더 공격적입니다. 문자열 변환 매크로에는 몇 가지 제한 사항이 있었습니다. 스택에서 메모리를 할당하고 큰 문자열로 스택을 오버플로할 수 있습니다. 함수가 종료될 때 문자열이 해제되었으며 함수 내부의 도입 된 범위가 아닙니다. 그것은 오래된 OLE2ANSI 정의를 사용하고 있었다. 그리고 MSDN에서 _alloca (변환에 사용 된)에 대한 비고를 보면 SEH 또는 C ++ EH 내부에서 사용할 때 제한이 있다고 말합니다.

예를 들어 ATL3 문자열 변환 매크로: ATL 팀은 변환 매크로를 개선하는 데 두 번의 스와이프를 한 것으로 보입니다. 마지막 해결책은 변환 클래스입니다. 그러나 두 번째 변환 매크로 집합은 _EX flavor입니다. 이들은 원래 변환 매크로처럼 많이 사용됩니다. 사용_변환_EX를 함수의 맨 위에 배치합니다. 매크로에는 T2A_EX와 같이 _EX 접미사가 있습니다. 그러나 _EX 매크로는 서로 다릅니다. 첫 번째 매개 변수는 평소와 같이 변환하는 버퍼입니다.

두 번째 매개 변수는 임계값입니다. 변환된 버퍼가 이 임계값보다 작으면 _alloca를 통해 메모리가 할당됩니다. 버퍼가 큰 경우 대신 힙에 할당됩니다. 따라서 이러한 매크로는 스택 오버플로를 피할 수 있는 기회를 제공합니다. (그들은 여전히 캐치 블록에서 당신을 도움이되지 않습니다.) ATL 코드는 _EX 매크로를 광범위하게 사용합니다. 이전 예제는 여전히 이전 매크로를 사용하는 유일한 왼쪽 예입니다. 약간의 코딩 규율과 일부 전처리기 매직을 사용하면 TCHAR 문자열 인수를 예상하는 SetWindowText라는 단일 API가 있는 것처럼 코딩할 수 있습니다.

    Outros serviços