[GRASS-dev] Re: [GRASS-user] Problems with v.outlier and
v.lidar.edgedetection
Glynn Clements
glynn at gclements.plus.com
Fri Nov 17 14:59:59 EST 2006
Brad Douglas wrote:
> > > some minutes ago I have submitted a fix from Roberto Antolin
> > > to fix a v.outlier problem. It fixes a crash if qgis=name
> > > isn't used (so, maybe use that and it works)?
> >
> > C question re that fix: (vector/lidar/v.outlier/main.c)
> >
> > /* Structs' declarations */
> > struct Map_info In, Out, Outlier, Qgis;
> > struct Option *in_opt, *out_opt, *outlier_opt, *qgis_opt, *passoE_opt, *passoN_opt, \
> > *lambda_f_opt, *Thres_O_opt;
> >
> >
> > is the end of line "\" harmful or treated like whitespace?
>
> It's interpreted as string literal concatenation. In my experience,
> it's useful with strings:
>
> Okay for gcc:
> fprintf(stderr, "blah blah"
> "more blah blah");
>
> More appropriate:
> fprintf(stderr, "blah blah" \
> "more blah blah");
>
> I'm sure Glynn has details, but that is my understanding. I don't know
> if the same issues apply with variable declaration, but it isn't
> necessary at least with gcc.
The use of backslash-newline sequence is only useful in preprocessor
directives, which are terminated by any line break (LF on Unix, CRLF
on Windows, etc) which is not immediately preceded by a backslash.
In the above case, it's entirely unnecessary; a newline is treated no
differently to a space or tab in normal C code.
As for string concatenation: the preprocessor automatically
concatenates adjacent string literals, i.e. those which are separated
only by whitespace. E.g. the following are all equivalent:
printf("hello world\n");
printf("hello" " " "world" "\n");
printf("hello "
"world\n");
--
Glynn Clements <glynn at gclements.plus.com>
More information about the grass-dev
mailing list