Re: Asm style

ncw@axis.demon.co.uk
Thu, 22 Nov 2001 09:27:42 GMT


Giacomo Catenazzi wrote:
> Ben Collins wrote:
> > There's also:
> >
> > asm("\
> > cmd r,r\n\
> > lbl: cmd r,r\n\
> > cmd r,r\n" : spec : spec);
> >
> >
> > Or something similar (the trailing "\" added for continuation). Probably
> > the easiest way to patch existing asm.
>
> not ANSI C. The trailing \ is understood only in marco definitions
> (and outside strings)

gcc begs to differ

/* z.c */
#include <stdio.h>

int main(void)
{
printf("This is a string\n\
with continuation characters\n");
return 0;
}

$ gcc -Wall -pedantic -ansi z.c -o z
[silence]

Remove the \ and you get

z.c:5: warning: string constant runs past end of line
z.c: In function `main':
z.c:5: warning: ANSI C forbids newline in string constant

You are correct in thinking it is something to do with pre-processor -
it deals with these continuation lines eg,

$ gcc -E -Wall -pedantic -ansi z.c

Gives
[snip stdio etc]
int main(void)
{
printf("This is a string\nwith continuation characters\n");

return 0;
}

-- 
Nick Craig-Wood
ncw@axis.demon.co.uk
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/