This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/47143] New: warning about const multidimensional array as function parameter
- From: "rogi at linuxmail dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 1 Jan 2011 05:38:32 +0000
- Subject: [Bug c/47143] New: warning about const multidimensional array as function parameter
- Auto-submitted: auto-generated
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: unassigned@gcc.gnu.org
ReportedBy: rogi@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.