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.