함수를 사용하여 레벨을 생성 중이므로 그를 업데이트하기 위해 포인터를 포인터로 보내고 있습니다. 그러나 SDL_MapRGB를 사용하려고하면 *screen->format
부분에 오류가 발생합니다. 이렇게하는 방법이 있습니까? 여기 내가 사용하고 코드입니다 :SDL_MapRGB, 포인터에 포인터를 사용하여 화면 -> 형식을 얻는 방법
void generateLevel(SDL_Surface** screen)
{
int i=0, j=0;
char object =' ';
FILE* level = NULL;
SDL_Surface* lvl[LARGEUR_MAP][HAUTEUR_MAP];
SDL_Rect posElem;
//Ouverture du fichier contenant les infos du niveau
level = fopen("lvl.txt","r");
if(level == NULL)
{
fprintf(stderr,"Erreur lors de l'ouverture du fichier");
exit(EXIT_FAILURE);
}
//Boucle pour lire le fichier et placer les éléments du décor
for(j=0;j<HAUTEUR_MAP;j++)
{
for(i=0;i<LARGEUR_MAP;i++)
{
object = fgetc(level);
if(object == '\n')
object = fgetc(level);
switch(object)
{
case 'm':
lvl[i][j] = IMG_Load("images\\mur.jpg");
posElem.x = i*TAILLE_BLOC;
posElem.y = j*TAILLE_BLOC;
SDL_BlitSurface(lvl[i][j], NULL, *screen, &posElem);
break;
}
}
}
SDL_FillRect(*screen, NULL, SDL_MapRGB(*screen->format,255,255,255));
SDL_Flip(*screen);
fclose(level);
}
오류 코드의 끝에 오는의 SDL_FillRect에(); 모든 것이 정상적으로 작동하지만이 작업을 수행하는 방법을 알 수 없습니다. * screen-> format, ** screen-> format, screen-> format 그리고 심지어 & screen-> format (얼마나 절망적인가 ^^)으로 시도했습니다.
편집 : 오류
error: request for member 'format' in '* screen', which is of pointer type 'SDL_Surface*' (maybe you meant to use '->' ?)"`
'(* 화면) -> 형식'은 어떻습니까? –
완벽한!당신은 항상 Sourav를 돕기 위해 여기에 있습니다. "()"이 필요한 이유를 물어볼 수 있습니까? – DoT
[연산자 우선 순위] (http://en.cppreference.com/w/c/language/operator_precedence)와 관련이 있습니다. 댓글로 게시 할 수있는 긴 비트. 내 대답을 자세히 설명하겠습니다. :-) –