Re: [PATCH v2 3/8] diff-delta.c: "delta.h" is not a required include
flat view
From: Brandon Casey <hidden>
Date: 2016-06-15 22:46:54
Nicolas Pitre wrote:
On Fri, 5 Jun 2009, Brandon Casey wrote:quoted
From: Brandon Casey <redacted> When compiling diff-delta.c with the SUNWspro C99 compiler, it complains "diff-delta.c", line 314: identifier redeclared: create_delta There is nothing in "delta.h" that is required by diff-delta.c, so don't include it. Signed-off-by: Brandon Casey <redacted>NAK. This is common practice to include the header file declaring function prototypes into the file defining the actual function so to make sure the declaration matches with the definition. Deleting that include is actively ignoring a problem instead of fixing the cause of it.
It doesn't seem to like the structure being redeclared with a flex array
member and being passed as a const argument.
# cat > test.c <<EOF
struct a_struct;
extern void *test_func(const struct a_struct *f);
struct a_struct {
int a;
int b;
char* c[];
};
void *test_func(const struct a_struct *f)
{
return 0;
}
EOF
# /opt/SUNWspro/bin/c99 -c test.c
"test.c", line 13: identifier redeclared: test_func
current : function(pointer to const struct a_struct {int a, int b, array[-1] of pointer to char c}) returning pointer to void
previous: function(pointer to const struct a_struct {int a, int b, array[-1] of pointer to char c}) returning pointer to void : "test.c", line 4
c99: acomp failed for test.c
If either the flex array is removed from the structure, or const is removed from
test_func argument, test.c will compile. Compiling with -O0 doesn't help.
-brandon