2010-08-01 4 views
0

Je crée un patcher pour un jeu mais je reçois l'erreur "initializer-string pour array of array of chars is too long" de Mingw. J'essaie de créer un tableau multidimensionnel de caractères pour contenir les fonctions à corriger.
J'ai vérifié pour d'autres questions à ce sujet et trouvé un où le demandeur a oublié d'ajouter des virgules à la fin de chaque chaîne littérale, mais je l'ai déjà fait.initializer-string pour le tableau de tableau de caractères est trop long

Quelqu'un peut-il m'aider?

La source qui déclenche l'erreur:

char patches2[][64] = { 
    "CreateMutexW", 
    "CreateRemoteThread", 
    "CreateRemoteThreadEx", 
    "[email protected][email protected]@@[email protected]", 
    "[email protected][email protected]@@[email protected]@@[email protected]@[email protected]", 
    "[email protected][email protected]@@[email protected]@@[email protected]@[email protected][email protected]", 
    "[email protected][email protected]@@[email protected]@@[email protected]@[email protected][email protected]", 
    "[email protected][email protected][email protected]@@[email protected]@@[email protected]@QBEPB_WXZ", 
    "[email protected]@[email protected]@[email protected][email protected]@@Z", 
    "[email protected]@@[email protected]", 
    "[email protected]@@[email protected]", 
    "[email protected]@@[email protected]@Z", 
    "[email protected]@@[email protected]@Z", 
    "[email protected]@@[email protected]@Z", 
    "[email protected]@@[email protected][email protected]", 
    "[email protected]@@[email protected][email protected]@@[email protected]@@[email protected]", 
    "[email protected]@[email protected]@YAKXZ", 
    "[email protected]@[email protected]@[email protected][email protected]@XZ", 
    "[email protected]@[email protected]@QAEKXZ", 
    "[email protected]@[email protected]@QAE_NXZ", 
    "[email protected]@[email protected]@[email protected]", 
    "[email protected]@[email protected]@[email protected]@[email protected]@[email protected]", 
    "[email protected]@[email protected]@QBE_KXZ", 
    "[email protected]@[email protected]@QAEEXZ", 
    "[email protected]@[email protected]@QAEMXZ", 
    "[email protected]@[email protected]@[email protected][email protected]@@[email protected]@@[email protected]@AB [email protected]@Z", 
    "[email protected]@[email protected]@QAEMXZ", 
    "[email protected]@[email protected]@QAEMXZ", 
    "[email protected]@@QBE_NXZ", 
    "[email protected]@[email protected]@[email protected]", 
    "[email protected]@[email protected]@[email protected]@[email protected]@Z", 
    "[email protected]@[email protected]@QBEMXZ", 
    "[email protected]@[email protected]@QBEKXZ", 
    "[email protected]@[email protected]@QBEKXZ", 
    "[email protected]@[email protected]@[email protected]", 
    "[email protected]@[email protected]@QBE_NXZ", 
    "[email protected]@[email protected]@QBE_NXZ", 
    "[email protected]@[email protected]@QBE_NXZ", 
    "[email protected]@[email protected]@QBE_NXZ", 
    "[email protected]@[email protected]@QBE_NXZ", 
    "[email protected]@[email protected]@QBE_NXZ", 
    "[email protected]@[email protected]@[email protected]@[email protected][email protected]@@[email protected]@@[email protected]@A[email protected]@@Z", 
    "[email protected]@[email protected]@[email protected]@[email protected][email protected]@@[email protected]@@[email protected]@[email protected]@@Z", 
    "[email protected]@[email protected]@[email protected]@[email protected][email protected]@@[email protected]@@[email protected]@[email protected]@@Z", 
    "[email protected]@[email protected]@AAEXXZ", 
    "[email protected]@[email protected]@QBEGXZ", 
    "[email protected]@[email protected]@QBEMXZ", 
    "[email protected]@[email protected]@[email protected][email protected]@@[email protected]@@[email protected]@[email protected]@@Z", 
    "[email protected]@[email protected]@[email protected]", 
    "[email protected]@[email protected]@[email protected]@@[email protected][email protected]@@[email protected]@@[email protected]@Z", 
    "[email protected]@@[email protected][email protected]@@[email protected]@@[email protected]@[email protected]", 
    "[email protected]@@[email protected][email protected]@@[email protected]@@[email protected]@[email protected]@[email protected]", 
    "[email protected]@@YA_KXZ", 
    "[email protected]@@[email protected]", 
    "[email protected]@[email protected]@QBE_NXZ", 
    "[email protected]@[email protected]@[email protected]", 
    "[email protected]@[email protected]@[email protected]@@Z", 
    "[email protected]@[email protected]@QBE_NXZ", 
    "[email protected]@[email protected]@QAEKXZ", 
    "[email protected]@[email protected]@QBE_NXZ", 
    "[email protected]@[email protected]@[email protected]", 
    "[email protected]@[email protected]@[email protected]", 
    "[email protected]@[email protected]@QBE?B_NXZ", 
    "[email protected]@[email protected]@[email protected]@@Z" 
}; 

Répondre

2
char patches2[][64] 

C'est un tableau de tableaux. La première dimension est déterminée automatiquement à partir du nombre d'éléments dans l'initialiseur. La deuxième dimension est spécifiée comme étant 64 char s.

Certains des littéraux de chaîne avec lesquels vous initialisez patches2 ont une longueur supérieure à 64 caractères. Vous devez augmenter la taille à une valeur suffisamment grande pour contenir la plus grande chaîne C dans l'initialiseur.

+0

Ohhh ... J'ai mélangé les deux dimensions Xp –

+0

@ kotarou3: alors vous avez probablement besoin d'un tableau de pointeurs sur les chaînes de caractères: 'char * patches [] = {...};'. –

1

Eh bien, la déclaration pour une seule chaîne ressemble à ceci:

const char* myString = "MyString"; 

Ce que vous voulez probablement est un tableau de const char* s. Vous pouvez remplacer char patches2[][64] par const char* patches2[] (un tableau de pointeurs vers const char).

Le nombre de const char* s en patches2 peut être calculée à l'aide sizeof():

const char* patches2[] = {"CreateMutexW", /* The rest... */ }; 
int numPatches = sizeof(patches2)/sizeof(const char*); 

Donc, si vous ajoutez/supprimer certaines chaînes, vous ne devez pas mettre à jour les dimensions.

+0

Votre réponse n'est pas vraiment une réponse à ma question, mais c'est quelque chose que je peux mettre :) –