By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
454,486 Members | 1,589 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 454,486 IT Pros & Developers. It's quick & easy.

stray '\160' in program

P: n/a
Right. I`m using Dev-Cpp, and I`m working on a game at this time in SDL
(http://libsdl.org), and I`ve come across this error:

------------------------------------------
main.c: In function `SDL_main':
main.c:140: error: stray '\160' in program
main.c:140: error: stray '\160' in program
main.c:140: error: stray '\160' in program
main.c:140: error: stray '\160' in program

make.exe: *** [main.o] Error 1

Execution terminated
------------------------------------------

Which halts my entire game development, and I`ve no idea whats wrong.
Here`s the full source:

(it`s messy, because I`ve tried to debug it a lot, ignore the commented
statements and such)

-------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <SDL/SDL.h>
#include "include/SDL_std.h"

SDL_Surface *screen;
SDL_Surface *image;
void DrawIMG(SDL_Surface *img, int x, int y, int w, int h, int x2, int
y2)
{
SDL_Rect dest;
dest.x = x;
dest.y = y;
SDL_Rect dest2;
dest2.x = x2;
dest2.y = y2;
dest2.w = w;
dest2.h = h;
SDL_BlitSurface(img, &dest2, screen, &dest);
}

void patchbg(int x, int y)
{
DrawIMG(image, 0, 0, 50, 50, x-2, y-2);
}

void ShowBMP(char *file, SDL_Surface *screen, int x, int y)
{

SDL_Rect dest;

/* Load the BMP file into a surface */
image = SDL_LoadBMP(file);
if ( image == NULL ) {
fprintf(stderr, "Couldn't load %s: %s\n", file,
SDL_GetError());
return;
}

/* Blit onto the screen surface.
The surfaces should not be locked at this point.
*/
dest.x = x;
dest.y = y;
dest.w = image->w;
dest.h = image->h;
SDL_BlitSurface(image, NULL, screen, &dest);

/* Update the changed portion of the screen */
SDL_UpdateRects(screen, 1, &dest);
}

void blit_mb(x, y)
{
SDL_Surface *redblock;
redblock = SDL_LoadBMP("data/meatball.bmp");

SDL_Rect source;

source.x = x;

source.y = y;

source.w = 50;

source.h = 50;

SDL_Rect destination;

destination.x = x;

destination.y = y;

destination.w = 50;

destination.h = 50;
SDL_SetColorKey(redblock,SDL_SRCCOLORKEY,SDL_MapRG B(redblock->format,255,255,255));

SDL_BlitSurface(redblock, &source, screen, &destination);
}

int main(int argc, char *argv[])
{
if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 )
{
printf("Unable to init SDL: %s\n", SDL_GetError());
exit(1);
}
atexit(SDL_Quit);

SDL_Surface *screen;
screen=SDL_SetVideoMode(600,600,32,SDL_SWSURFACE|S DL_DOUBLEBUF);

if ( screen == NULL )
{
printf("Unable to set 640x480 video: %s\n", SDL_GetError());
exit(1);
}

int xpos, ypos = 0;

ShowBMP("data/logo.bmp", screen, 0, 0);
//ShowBMP("data/meatball.bmp", screen, 0, 0);

blit_mb(0, 0);

int done=0;
while(done == 0)
{
SDL_Event event;

while(SDL_PollEvent(&event))
{
if(event.type == SDL_QUIT)
done = 1;

if(event.type == SDL_KEYDOWN)
{
if (event.key.keysym.sym == SDLK_ESCAPE)
done = 1;
}

Uint8* keys;
keys = SDL_GetKeyState(NULL);

if(keys[SDLK_UP])
ypos -= 5;
if(keys[SDLK_DOWN])
ypos += 5;
if(keys[SDLK_LEFT])
xpos -= 5;
if(keys[SDLK_RIGHT])
xpos += 5;
//ShowBMP("data/meatball.bmp", screen, xpos, ypos);
blit_mb(xpos, ypos);
SDL_UpdateRect(screen, 25, 25, xpos-25, ypos-25);

//SDL_SetColorKey(image, SDL_SRCCOLORKEY, SDL_MapRGB(image->format,
255, 255, 255));

//patchbg(xpos, ypos);

//ShowBMP("data/meatball.bmp", screen, x, y);
//ShowBMP("data/logo.bmp", screen, 0, 0);
//ShowBMP("data/meatball.bmp", screen, x, y);
//SDL_Flip(screen);
}

}
return 0;
}
-------------------------------------------------------------------------------------------------

Help would me much appreciated.
Thanks.

Nov 20 '05 #1
Share this Question
Share on Google+
8 Replies


P: n/a
Alvin wrote:
Right. I`m using Dev-Cpp, and I`m working on a game at this time in SDL
(http://libsdl.org), and I`ve come across this error:

------------------------------------------
main.c: In function `SDL_main':
main.c:140: error: stray '\160' in program
main.c:140: error: stray '\160' in program
main.c:140: error: stray '\160' in program
main.c:140: error: stray '\160' in program


That '140' means that the error is on line 140 of your program.
Please paste lines 139-141 and not the rest, we can't tell from
your listing which line is line 140.

If you don't see anything obviously wrong with those lines, try
deleting them and re-typing them, you might have gotten a
stray control character in there somewhere.

in ASCII, '\160' is the lower case letter 'o', so it is a bit of a
strange compiler message.

Another likely possibilitiy is that you've saved the source file
as UTF-8, and the compiler is expecting iso-8859-1 (or
some other non-unicode encoding). Try hex-dumping the
source file at about line 140, and check that it isn't in UTF-8.

Nov 20 '05 #2

P: n/a
Old Wolf wrote:
Alvin wrote:
Right. I`m using Dev-Cpp, and I`m working on a game at this time in SDL
(http://libsdl.org), and I`ve come across this error:

------------------------------------------
main.c: In function `SDL_main':
main.c:140: error: stray '\160' in program
main.c:140: error: stray '\160' in program
main.c:140: error: stray '\160' in program
main.c:140: error: stray '\160' in program


That '140' means that the error is on line 140 of your program.
Please paste lines 139-141 and not the rest, we can't tell from
your listing which line is line 140.

If you don't see anything obviously wrong with those lines, try
deleting them and re-typing them, you might have gotten a
stray control character in there somewhere.

in ASCII, '\160' is the lower case letter 'o', so it is a bit of a
strange compiler message.


<pedantic_nitpick>
'\160' is the lower case letter 'p' in ASCII.
</pedantic_nitpick>

Robert Gamble

Nov 20 '05 #3

P: n/a
Alvin said:
Right. I`m using Dev-Cpp, and I`m working on a game at this time in SDL
(http://libsdl.org), and I`ve come across this error:

------------------------------------------
main.c: In function `SDL_main':


The code you posted does not include an SDL_main function. It is possible
that it has (unwisely) been defined in a header which you forgot to show us
- "include/SDL_std.h" - but it is not possible for us to help you much
further if you don't show us the relevant file.

The most likely explanation, though, is that you've accidentally included a
control character in your source file. I suggest re-typing the line from
scratch (DON'T copy/paste it!), deleting the original line, and then
re-trying the compilation.

--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)
Nov 20 '05 #4

P: n/a
In article <11**********************@g14g2000cwa.googlegroups .com>,
Alvin <al***********@gmail.com> wrote:
main.c:140: error: stray '\160' in program


160 (hex) in Unicode and various Latin-* encodings is non-breaking space.
You've probably managed to get one of these instead of a normal space
character in your program.

-- Richard
Nov 20 '05 #5

P: n/a
Robert Gamble wrote:
Old Wolf wrote:
Alvin wrote:

Right. I`m using Dev-Cpp, and I`m working on a game at this time in SDL
(http://libsdl.org), and I`ve come across this error:

------------------------------------------
main.c: In function `SDL_main':
main.c:140: error: stray '\160' in program
<snip>If you don't see anything obviously wrong with those lines, try
deleting them and re-typing them, you might have gotten a
stray control character in there somewhere.

in ASCII, '\160' is the lower case letter 'o', so it is a bit of a
strange compiler message.

<pedantic_nitpick>
'\160' is the lower case letter 'p' in ASCII.
</pedantic_nitpick>

It is common for applications (even C compilers) to output escaped
characters (not occurring in the source as constants) as decimal, not octal.

\160, if interpreted this way, is outside the range of ASCII. In many
extensions of ASCII (and Unicode), this character represents a
non-breaking space. It's common to produce this character with
shift+space, so it's easy enough to accidentally type, and obviously it
looks exactly like a space in most representations.

S.
Nov 20 '05 #6

P: n/a
Skarmander <in*****@dontmailme.com> writes:
Robert Gamble wrote:
Old Wolf wrote:
Alvin wrote:

Right. I`m using Dev-Cpp, and I`m working on a game at this time in SDL
(http://libsdl.org), and I`ve come across this error:

------------------------------------------
main.c: In function `SDL_main':
main.c:140: error: stray '\160' in program <snip>If you don't see anything obviously wrong with those lines, try
deleting them and re-typing them, you might have gotten a
stray control character in there somewhere.

in ASCII, '\160' is the lower case letter 'o', so it is a bit of a
strange compiler message.

<pedantic_nitpick>
'\160' is the lower case letter 'p' in ASCII.
</pedantic_nitpick>

It is common for applications (even C compilers) to output escaped
characters (not occurring in the source as constants) as decimal, not
octal.

\160, if interpreted this way, is outside the range of ASCII. In many
extensions of ASCII (and Unicode), this character represents a
non-breaking space. It's common to produce this character with
shift+space, so it's easy enough to accidentally type, and obviously
it looks exactly like a space in most representations.


If so, that's a *very* peculiar error message. If a compiler found a
stray character 160-decimal in a source file, I wouldn't be surprised
to see an error message referring to 160, but I'd be astonished to see
a C compiler use a syntax, '\160', that *unambiguously* refers to the
character 160-octal (lower case 'p', assuming ASCII).

[... I go off and try some tests. ...]

Ok, hang on a second. I'm guessing that Dev-Cpp is based on gcc. I
just tried compiling a program that had a stray character 160-decimal
in it, using gcc 4.0.2. The error message was:

tmp.c:2: error: stray '\160' in program

So it *is* actually using C's syntax for an octal character constant,
but referring to the decimal value.

My prediction that I would be astonished if I saw this turns out to
have been accurate.

You have a stray non-printable character in the file "main.c". As
Skarmander says, character 160-decimal is typically something like a
non-breaking space; it may not appear odd in your text editor. If
you're on a Unix-like system, try something like

sed -n 140p main.c | od -c

If not, use some other method to look at the actual contents of the
line. This should show a character 240 (octal) on that line (or 0xa0
in hexadecimal).

Edit your main.c file, and delete and re-enter line 140.

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
Nov 21 '05 #7

P: n/a
Thanks for all your help. I`ll try and ocmpile this when I get home
later. I`ve know Dev-Cpp to emmit odd characters when holding space
before, so I wouldnt be suprised if it was a non-breaking space.

Nov 21 '05 #8

P: n/a
Thanks for the feedback, it`s fixed now!

Nov 21 '05 #9

This discussion thread is closed

Replies have been disabled for this discussion.