2010-08-01 4 views
0

게임에 대한 패치를 만들고 있지만 Mingw에서 "배열 배열 배열에 대한 initializer-string"오류가 발생합니다. 패치 할 함수를 포함하는 char의 다차원 배열을 만들려고합니다.
나는 이것에 대한 다른 질문을 확인한 후 묻은 사람이 모든 문자열 리터럴의 끝에 쉼표를 추가하는 것을 잊어 버린 곳을 찾았지만 이미 완료했습니다.chars 배열 배열의 initializer-string이 너무 깁니다.

아무도 도와 줄 수 있습니까?

오류를 트리거 소스 :

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]@@[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]@[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" 
}; 

답변

2
char patches2[][64] 

이것은 배열의 배열이다. 첫 번째 차원은 이니셜 라이저의 요소 수에서 자동으로 결정됩니다. 두 번째 차원은 64 char으로 지정됩니다.

patches2을 초기화하는 일부 문자열 리터럴의 길이가 64자를 초과합니다. 이니셜 라이저에서 가장 큰 C 문자열을 유지하기에 충분한 크기로 크기를 늘려야합니다.

+0

Ohhh ... 두 개의 치수가 xp –

+0

@ kotarou3까지 섞여있어 : 문자열에 대한 포인터 배열이 정말 필요할 것입니다. char * patches [] = {...};'. –

1

음, 하나의 문자열에 대한 선언은 다음과 같다 : 당신이 아마 원하는 것은 const char*의 배열이

const char* myString = "MyString"; 

. char patches2[][64]const char* patches2[] (const char에 대한 포인터의 배열)로 변경할 수 있습니다.

patches2에서 const char*의 수는 sizeof()을 사용하여 계산 될 수있다 : 당신이 추가하면

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

그래서/일부 문자열을 제거, 당신은 크기를 업데이트 할 필요가 없습니다.

+0

귀하의 답변은 내 질문에 대한 답변이 아니지만 내가 할 수있는 것입니다 :) –

관련 문제