Avviso del compilatore (livello 1) C4835
'variable': l'inizializzatore per i dati esportati non verrà eseguito fino a quando il codice gestito non viene eseguito per la prima volta nell'assembly host
Quando si accede ai dati tra componenti gestiti, è consigliabile non usare meccanismi di importazione ed esportazione C++ nativi. Dichiarare invece i membri dati all'interno di un tipo gestito e fare riferimento ai metadati con #using
nel client. Per altre informazioni, vedere Direttiva #using.
Esempi
L'esempio seguente genera l'errore 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
Nell'esempio seguente viene utilizzato il componente compilato nell'esempio precedente, che mostra che il valore delle variabili non è come previsto.
// 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