컴파일러 경고(수준 3) C4398
'variable': 프로세스별 전역 개체가 여러 appdo기본s에서 제대로 작동하지 않을 수 있습니다. __declspec(appdo기본)를 사용하는 것이 좋습니다.
설명
네이티브 형식의 __clrcall 호출 규칙을 사용하는 가상 함수는 애플리케이션당 vtable을 생성합니다기본. 여러 애플리케이션에서 사용되는 경우 이러한 변수가 올바르게 기본 않을 수 있습니다.
변수 __declspec(appdomain)
를 명시적으로 표시하여 이 경고를 해결할 수 있습니다. Visual Studio 2017 이전 버전의 Visual Studio에서는 기본적으로 appdo기본당 전역 변수를 만드는 /clr:pure로 컴파일하여 이 경고를 해결할 수 있습니다. /clr:pure 컴파일러 옵션은 Visual Studio 2015에서 더 이상 사용되지 않으며 Visual Studio 2017에서는 지원되지 않습니다.
자세한 내용은 appdo기본 및 Application Do기본 및 Visual C++를 참조하세요.
예시
다음 샘플에서는 C4398을 생성합니다.
// C4398.cpp
// compile with: /clr /W3 /c
struct S {
virtual void f( System::String ^ ); // String^ parameter makes function __clrcall
};
S glob_s; // C4398
__declspec(appdomain) S glob_s2; // OK
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기