다음을 통해 공유


컴파일러 경고(수준 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