Re: [PATCH] objects: scope count variable to loop
On Mon, Jul 24, 2017 at 10:12:59AM -0700, Stefan Beller wrote: > > Interestingly I have no problems compiling it here. I wonder if Stefan's > > config.mak is supplying -std=c89 or some other restrictive flag. Or if > > his compiler is a different version (though I tried with gcc-6, gcc-4.9, > > and clang-3.8). > > Before this patch, I only had > CFLAGS += -g -O0 > in config.mak (as I switched working directories recently), I'll throw in > DEVELOPER=1 > > My compiler version is ancient (gcc 4.8.4-2ubuntu1~14.04.3) > apparently (why did I never check in this environment?) Ah, indeed, it's the compiler version. And I actually screwed up my gcc-4.9 test. It complains, too. It looks like the default for gcc bumped from gnu90 to gnu11 in gcc 5. -Peff
Re: [PATCH] objects: scope count variable to loop
On Mon, Jul 24, 2017 at 10:08 AM, Jeff Kingwrote: > On Wed, Jul 19, 2017 at 11:23:42AM -0700, Brandon Williams wrote: > >> > object.c: In function ‘object_array_remove_duplicates’: >> > object.c:404:2: error: ‘for’ loop initial declarations are only allowed in >> > C99 mode >> > for (unsigned src = 0; src < nr; src++) { >> > ^ >> > object.c:404:2: note: use option -std=c99 or -std=gnu99 to compile your >> > code >> > >> > Using -std=c99 works for me. >> >> This would need a change to the makefile then wouldn't it? > > Actually, it complicates things even more, I'd think. We probably can't > just blindly add "-std=c99" to CFLAGS, as not all compilers would > support it (even if they _do_ support this construct). > > Interestingly I have no problems compiling it here. I wonder if Stefan's > config.mak is supplying -std=c89 or some other restrictive flag. Or if > his compiler is a different version (though I tried with gcc-6, gcc-4.9, > and clang-3.8). Before this patch, I only had CFLAGS += -g -O0 in config.mak (as I switched working directories recently), I'll throw in DEVELOPER=1 My compiler version is ancient (gcc 4.8.4-2ubuntu1~14.04.3) apparently (why did I never check in this environment?)
Re: [PATCH] objects: scope count variable to loop
On Wed, Jul 19, 2017 at 11:23:42AM -0700, Brandon Williams wrote: > > object.c: In function ‘object_array_remove_duplicates’: > > object.c:404:2: error: ‘for’ loop initial declarations are only allowed in > > C99 mode > > for (unsigned src = 0; src < nr; src++) { > > ^ > > object.c:404:2: note: use option -std=c99 or -std=gnu99 to compile your code > > > > Using -std=c99 works for me. > > This would need a change to the makefile then wouldn't it? Actually, it complicates things even more, I'd think. We probably can't just blindly add "-std=c99" to CFLAGS, as not all compilers would support it (even if they _do_ support this construct). Interestingly I have no problems compiling it here. I wonder if Stefan's config.mak is supplying -std=c89 or some other restrictive flag. Or if his compiler is a different version (though I tried with gcc-6, gcc-4.9, and clang-3.8). -Peff
Re: [PATCH] objects: scope count variable to loop
On 07/19, Stefan Beller wrote: > This is another test balloon to see if we get complaints from people > whose compilers do not support variables scoped to for loops. > > This part of the code base was chosen as it is very old code that does > not change often, such that a potential revert is easy. > > Signed-off-by: Stefan Beller> --- > > This is a rather aggressive test ballon, my compiler needed some > good arguments to accept the new world order: > > object.c: In function ‘object_array_remove_duplicates’: > object.c:404:2: error: ‘for’ loop initial declarations are only allowed in > C99 mode > for (unsigned src = 0; src < nr; src++) { > ^ > object.c:404:2: note: use option -std=c99 or -std=gnu99 to compile your code > > Using -std=c99 works for me. This would need a change to the makefile then wouldn't it? > > Thanks, > Stefan > > object.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/object.c b/object.c > index f818777412..af26ee2fbc 100644 > --- a/object.c > +++ b/object.c > @@ -397,11 +397,11 @@ static int contains_name(struct object_array *array, > const char *name) > > void object_array_remove_duplicates(struct object_array *array) > { > - unsigned nr = array->nr, src; > + unsigned nr = array->nr; > struct object_array_entry *objects = array->objects; > > array->nr = 0; > - for (src = 0; src < nr; src++) { > + for (unsigned src = 0; src < nr; src++) { > if (!contains_name(array, objects[src].name)) { > if (src != array->nr) > objects[array->nr] = objects[src]; > -- > 2.14.0.rc0.3.g6c2e499285 > -- Brandon Williams
[PATCH] objects: scope count variable to loop
This is another test balloon to see if we get complaints from people whose compilers do not support variables scoped to for loops. This part of the code base was chosen as it is very old code that does not change often, such that a potential revert is easy. Signed-off-by: Stefan Beller--- This is a rather aggressive test ballon, my compiler needed some good arguments to accept the new world order: object.c: In function ‘object_array_remove_duplicates’: object.c:404:2: error: ‘for’ loop initial declarations are only allowed in C99 mode for (unsigned src = 0; src < nr; src++) { ^ object.c:404:2: note: use option -std=c99 or -std=gnu99 to compile your code Using -std=c99 works for me. Thanks, Stefan object.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/object.c b/object.c index f818777412..af26ee2fbc 100644 --- a/object.c +++ b/object.c @@ -397,11 +397,11 @@ static int contains_name(struct object_array *array, const char *name) void object_array_remove_duplicates(struct object_array *array) { - unsigned nr = array->nr, src; + unsigned nr = array->nr; struct object_array_entry *objects = array->objects; array->nr = 0; - for (src = 0; src < nr; src++) { + for (unsigned src = 0; src < nr; src++) { if (!contains_name(array, objects[src].name)) { if (src != array->nr) objects[array->nr] = objects[src]; -- 2.14.0.rc0.3.g6c2e499285