Re: Strange const warning

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jonathan Kinsey <jon_kinsey@xxxxxxxxxxx> writes:

> The test.c file below gives a warning "passing arg 1 of `test' from
> incompatible pointer type", why is this?  I'm using gcc 3.4.2.
> 
> #include "stdio.h"
> 
> void test(const int a[1][1])
> {
> 	printf("%d\n", a[0][0]);
> }
> 
> int main()
> {
> 	int a[1][1] = {{0}};
> 	test(a);
> 	return 0;
> }

This is a generic C question, not a question specific to gcc.

The reason is that when arrays are passed as parameters, they decay to
pointers.  The effect is that the const qualifer does not work as you
expect it to.  If you remove the const, you will not get the warning.
For details on why it works this way, look for a C FAQ or a C
standards mailing list.

Ian

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux