SDL_rect gives error “does not name a type” when used in non-main file, but wheh using the same header file in my main file it compiles fine ,
below are my header file, cpp file and also main file
header2B.h
#ifndef header2B_H
#define header2B_H
#include <SDL2/SDL.h>
#include <SDL2/SDL.h>
#include <SDL2/SDL_ttf.h>
void SDLdisplay(char& lvl);
#endif
func2.cpp
#include "header2B.h"
extern SDL_Renderer * renderer;
extern SDL_Texture* tex;
SDL_Rect text_rect2; //giving error
text_rect2.w = 320;
text_rect2.h = 240;
text_rect2.x = 0;
text_rect2.y = 0;
void SDLdisplay(char& lvl){
if(lvl){
SDL_Surface *surface2 = NULL;
surface2 = SDL_LoadBMP("/home/u-16i/Pictures/fringelogo.bmp");
tex = SDL_CreateTextureFromSurface(renderer, surface2);
SDL_FreeSurface(surface2);surface2 = NULL;
SDL_RenderCopy( renderer, tex, NULL, &text_rect2);
}
}
main.cpp
#include "header2B.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <iostream>
using namespace std;
using std::cout;
using std::endl;
int main (int argc, char* argv[])
{
SDL_Window* window = NULL;
SDL_Surface* surface1 = NULL;
if (SDL_Init(SDL_INIT_VIDEO) < 0)
{
cout<<"failed... sdl Init"<< SDL_GetError()<<endl;
return -1;
}
window = SDL_CreateWindow("window title", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 320*2, 240*2, SDL_WINDOW_SHOWN |SDL_WINDOW_BORDERLESS);
if (window == NULL)
{
cout<<"failed... window"<< SDL_GetError()<<endl;
return -1;
}
SDL_Renderer * renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED );
if (renderer == NULL)
{
std::cerr << "Error creating window or renderer: " << SDL_GetError() << std::endl;
SDL_Quit();
return 1;
}
SDL_Event e;
bool quit = false;
SDL_Rect text_rect; //but it is not giving error
text_rect.w = 320;
text_rect.h = 240;
text_rect.x = 100;
text_rect.y = 100;
SDL_Surface *surface = NULL;
surface1 = SDL_LoadBMP("/home/u-16i/Pictures/fringelogo.bmp");
SDL_Texture* tex = SDL_CreateTextureFromSurface(renderer, surface1);
SDL_FreeSurface(surface1);surface1 = NULL;
char lvlM=1;
SDLdisplay(lvlM);
while (!quit)
{
while (SDL_PollEvent(&e))
{
switch (e.type)
{
case SDL_KEYDOWN:
switch (e.key.keysym.sym)
{
case SDLK_ESCAPE:
quit = true;
break;
}
break;
}
}
SDL_RenderClear(renderer);
SDL_RenderCopy( renderer, tex, NULL, &text_rect);
SDL_RenderPresent(renderer);
}
SDL_DestroyTexture(tex);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
what can be the possible reasons?? how to make it work, any help …