http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47143

           Summary: warning about const multidimensional array as function
                    parameter
           Product: gcc
           Version: 4.4.3
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: c
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: r...@linuxmail.org


Created attachment 22876
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22876
source which produces warning

Ehllo,

I'm getting some strange warning about this code:

--- snip ---

typedef double mat4[4][4];

void mprod4(mat4 r, const mat4 a, const mat4 b)
{
/* yes, function is empty */
}

int main()
{
    mat4 mr, ma, mb;
    mprod4(mr, ma, mb);
}

------------

gcc output as follows:

--- snip ----

$ gcc -o test test.c
test.c: In function 'main':
test.c:13: warning: passing argument 2 of 'mprod4' from incompatible pointer
type
test.c:4: note: expected 'const double (*)[4]' but argument is of type 'double
(*)[4]'
test.c:13: warning: passing argument 3 of 'mprod4' from incompatible pointer
type
test.c:4: note: expected 'const double (*)[4]' but argument is of type 'double
(*)[4]'

------------

defining the function as:

--- snip ---

void mprod4(mat4 r, mat4 a, mat4 b)
{
}

------------

OR defining matrices at main as:

--- snip ---

mat4 mr;
const mat4 ma;
const mat4 mb;

------------

OR calling teh function in main as:

--- snip ---

mprod4(mr, (const double(*)[4])ma, (const double(*)[4])mb);

------------

OR even defining mat4 as:

--- snip ---

typedef double mat4[16];

------------

make teh warning go away. Wat is happening here? Am I doing something invalid?

I have attached source code.

Thanks for your attention.

Reply via email to