- #1
Peter P.
- 23
- 0
I started using g++ and the command line on linux.
In one section of my code, I provide a default argument for a function parameter.
I'm just wondering why this sometimes brings up an error if i don't include -fpermissive
when I'm compiling everything.
As an example. This is the apply_surface function (taken from lazyfoo.net SDL tutorials):
Even if i were to enter:
or
These will result in the following error:
main.cpp:81:103: error: default argument given for parameter 5 of ‘void applySurface(int, int, SDL_Surface*, SDL_Surface*, SDL_Rect*)’ [-fpermissive]
main.cpp:16:6: error: after previous specification in ‘void applySurface(int, int, SDL_Surface*, SDL_Surface*, SDL_Rect*)’ [-fpermissive]
But if I were to use this function (also with a default argument):
Then it'll compile perfectly, without any errors.
So is this something that I will just have to deal with all the time, or is there some setting i can
change to make it not necessary to include -fpermissive when the error pops up (other than make files)?
Any help is appreciated, and I hope that i have been detailed enough in the explanation of my problem.
-Peter P.
In one section of my code, I provide a default argument for a function parameter.
I'm just wondering why this sometimes brings up an error if i don't include -fpermissive
when I'm compiling everything.
As an example. This is the apply_surface function (taken from lazyfoo.net SDL tutorials):
Code:
void apply_surface (int x, int y, SDL_Surface * source, SDL_Surface * destination,
SDL_Rect * clip = NULL) {
SDL_Rect offsets;
offsets.x = x;
offsets.y = y;
SDL_BlitSurface (source, clip, destination, &offsets);
}
Even if i were to enter:
Code:
apply_surface (0, 0, backGround, screen);
Code:
apply_surface (0, 0, backGround, screen, NULL);
These will result in the following error:
main.cpp:81:103: error: default argument given for parameter 5 of ‘void applySurface(int, int, SDL_Surface*, SDL_Surface*, SDL_Rect*)’ [-fpermissive]
main.cpp:16:6: error: after previous specification in ‘void applySurface(int, int, SDL_Surface*, SDL_Surface*, SDL_Rect*)’ [-fpermissive]
But if I were to use this function (also with a default argument):
Code:
void function (int x, int y = 0) {
std::cout << x << "\t" << y << std::endl;
}
Then it'll compile perfectly, without any errors.
So is this something that I will just have to deal with all the time, or is there some setting i can
change to make it not necessary to include -fpermissive when the error pops up (other than make files)?
Any help is appreciated, and I hope that i have been detailed enough in the explanation of my problem.
-Peter P.