Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | August Karlstrom <fusionfile@gmail.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Incompatible pointer types with GCC |
| Date | 2016-12-16 23:02 +0100 |
| Organization | A noiseless patient Spider |
| Message-ID | <o31o7a$f7g$1@dont-email.me> (permalink) |
| References | <o30g9b$v1l$1@dont-email.me> <87eg172468.fsf@bsb.me.uk> |
On 2016-12-16 18:07, Ben Bacarisse wrote: > August Karlstrom <fusionfile@gmail.com> writes: > The [] might confuse some people. This is simply > > void P(const Row *A) I prefer to use brackets when a sequence is expected, it provides more semantic information. >> test.c:3:6: note: expected ‘const int (*)[10]’ but argument is of type >> ‘int (*)[10]’ >> void P(const Row A[]) >> ^ > > I think gcc is right to complain. > > Whilst the types are not compatible, that's not really the problem here. > For example, you can pass an int * to a function that takes const int * > and those two types are not compatible. Argument passing is done "as if > by assignment", and in an assignment the pointed-to type on the left can > have extra qualifiers. But here, the const qualifies the element type, > not the pointed-to type, which is an array type. (C has not qualified > array types at all). That's counter-intuitive. I thought const applied to Row. > The call is safe, of course, but C chose to use a simple rule rather > than trying to identify only those calls (and assignments) that are not > safe. C++ has a more comprehensive rule. > > Cases like this (and passing to a const T ** parameter) are some of the > rare times when you really need a cast. OK, thanks for the clarification. -- August
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Incompatible pointer types with GCC August Karlstrom <fusionfile@gmail.com> - 2016-12-16 11:41 +0100
Re: Incompatible pointer types with GCC BartC <bc@freeuk.com> - 2016-12-16 11:06 +0000
Re: Incompatible pointer types with GCC Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-12-16 17:07 +0000
Re: Incompatible pointer types with GCC August Karlstrom <fusionfile@gmail.com> - 2016-12-16 23:02 +0100
Re: Incompatible pointer types with GCC Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-12-17 00:48 +0000
Re: Incompatible pointer types with GCC martin.uecker@med.uni-goettingen.de - 2016-12-18 08:06 -0800
Re: Incompatible pointer types with GCC Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-12-18 20:11 +0000
Re: Incompatible pointer types with GCC supercat@casperkitty.com - 2016-12-18 14:43 -0800
Re: Incompatible pointer types with GCC Tim Rentsch <txr@alumni.caltech.edu> - 2016-12-29 13:33 -0800
csiph-web