Compilerwarnung (Ebene 1) C4835

'Variable': Der Initialisierer für exportierte Daten wird erst ausgeführt, wenn verwalteter Code zuerst in der Hostassembly ausgeführt wird.

Beim Zugriff auf Daten zwischen verwalteten Komponenten wird empfohlen, dass Sie keine systemeigenen C++-Import- und Exportmechanismen verwenden. Deklarieren Sie stattdessen Ihre Datenmember innerhalb eines verwalteten Typs, und verweisen Sie auf die Metadaten #using im Client. Weitere Information finden Sie unter #using Directive (#using-Direktive).

Beispiele

Im folgenden Beispiel wird C4835 generiert.

// 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

Im folgenden Beispiel wird die im vorherigen Beispiel integrierte Komponente verwendet, die zeigt, dass der Wert der Variablen nicht wie erwartet ist.

// 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