컴파일러 경고(수준 1) C4835
'variable': 관리 코드가 호스트 어셈블리에서 처음 실행될 때까지 내보낸 데이터의 이니셜라이저가 실행되지 않습니다.
관리되는 구성 요소 간에 데이터에 액세스할 때는 네이티브 C++ 가져오기 및 내보내기 메커니즘을 사용하지 않는 것이 좋습니다. 대신 관리되는 형식 내에서 데이터 멤버를 선언하고 클라이언트에서 메타데이터를 #using
참조합니다. 자세한 내용은 #using 지시문을 참조하세요.
예제
다음 샘플에서는 C4835를 생성합니다.
// C4835.cpp
// compile with: /W1 /clr /LD
int f() { return 1; }
int n = 9;
__declspec(dllexport) int m = f(); // C4835
__declspec(dllexport) int *p = &n; // C4835
다음 샘플에서는 이전 샘플에서 빌드된 구성 요소를 사용하여 변수 값이 예상대로 되지 않음을 보여 줍니다.
// C4835_b.cpp
// compile with: /clr C4835.lib
#include <stdio.h>
__declspec(dllimport) int m;
__declspec(dllimport) int *p;
int main() {
printf("%d\n", m);
printf("%d\n", p);
}
0
268456008