#include <general.dep> typedef struct { } obj; void f1(obj **ppo) {} void f2(const obj **ppo) {} void f3(obj *const *ppo) {} void f4(obj **const ppo) {} void f5(const obj *const *ppo) {} void f6(const obj **const ppo) {} void f7(obj *const *const ppo) {} void f8(const obj *const *const ppo) {} void g1(obj *po) {} void g2(const obj *po) {} void g3(obj *const po) {} void g4(const obj *const po) {} int main() { obj o, *po, **ppo; f1(&po); f2(&po); f3(&po); f4(&po); f5(&po); f6(&po); f7(&po); f8(&po); f1(ppo); f2(ppo); f3(ppo); f4(ppo); f5(&po); f6(&po); f7(&po); f8(&po); g1(&o); g2(&o); g3(&o); g4(&o); g1(po); g2(po); g3(po); g4(po); return 0; }
Quote:gcc t1.c -I/home/hamidi/code/lib/general/inc -fmax-errors=1 -lgeneral -llzma -pthread -o t1 t1.c: In function ‘main’: t1.c:24:6: warning: passing argument 1 of ‘f2’ from incompatible pointer type [-Wincompatible-pointer-types] 24 | f2(&po); | ^~~ | | | obj ** {aka struct <anonymous> **} t1.c:7:21: note: expected ‘const obj **’ {aka ‘const struct <anonymous> **’} but argument is of type ‘obj **’ {aka ‘struct <anonymous> **’} 7 | void f2(const obj **ppo) {} | ~~~~~~~~~~~~^~~ t1.c:27:6: warning: passing argument 1 of ‘f5’ from incompatible pointer type [-Wincompatible-pointer-types] 27 | f5(&po); | ^~~ | | | obj ** {aka struct <anonymous> **} t1.c:10:27: note: expected ‘const obj * const*’ {aka ‘const struct <anonymous> * const*’} but argument is of type ‘obj **’ {aka ‘struct <anonymous> **’} 10 | void f5(const obj *const *ppo) {} | ~~~~~~~~~~~~~~~~~~^~~ t1.c:28:6: warning: passing argument 1 of ‘f6’ from incompatible pointer type [-Wincompatible-pointer-types] 28 | f6(&po); | ^~~ | | | obj ** {aka struct <anonymous> **} t1.c:11:27: note: expected ‘const obj ** const’ {aka ‘const struct <anonymous> ** const’} but argument is of type ‘obj **’ {aka ‘struct <anonymous> **’} 11 | void f6(const obj **const ppo) {} | ~~~~~~~~~~~~~~~~~~^~~ t1.c:30:6: warning: passing argument 1 of ‘f8’ from incompatible pointer type [-Wincompatible-pointer-types] 30 | f8(&po); | ^~~ | | | obj ** {aka struct <anonymous> **} t1.c:13:33: note: expected ‘const obj * const* const’ {aka ‘const struct <anonymous> * const* const’} but argument is of type ‘obj **’ {aka ‘struct <anonymous> **’} 13 | void f8(const obj *const *const ppo) {} | ~~~~~~~~~~~~~~~~~~~~~~~~^~~ t1.c:33:6: warning: passing argument 1 of ‘f2’ from incompatible pointer type [-Wincompatible-pointer-types] 33 | f2(ppo); | ^~~ | | | obj ** {aka struct <anonymous> **} t1.c:7:21: note: expected ‘const obj **’ {aka ‘const struct <anonymous> **’} but argument is of type ‘obj **’ {aka ‘struct <anonymous> **’} 7 | void f2(const obj **ppo) {} | ~~~~~~~~~~~~^~~ t1.c:36:6: warning: passing argument 1 of ‘f5’ from incompatible pointer type [-Wincompatible-pointer-types] 36 | f5(&po); | ^~~ | | | obj ** {aka struct <anonymous> **} t1.c:10:27: note: expected ‘const obj * const*’ {aka ‘const struct <anonymous> * const*’} but argument is of type ‘obj **’ {aka ‘struct <anonymous> **’} 10 | void f5(const obj *const *ppo) {} | ~~~~~~~~~~~~~~~~~~^~~ t1.c:37:6: warning: passing argument 1 of ‘f6’ from incompatible pointer type [-Wincompatible-pointer-types] 37 | f6(&po); | ^~~ | | | obj ** {aka struct <anonymous> **} t1.c:11:27: note: expected ‘const obj ** const’ {aka ‘const struct <anonymous> ** const’} but argument is of type ‘obj **’ {aka ‘struct <anonymous> **’} 11 | void f6(const obj **const ppo) {} | ~~~~~~~~~~~~~~~~~~^~~ t1.c:39:6: warning: passing argument 1 of ‘f8’ from incompatible pointer type [-Wincompatible-pointer-types] 39 | f8(&po); | ^~~ | | | obj ** {aka struct <anonymous> **} t1.c:13:33: note: expected ‘const obj * const* const’ {aka ‘const struct <anonymous> * const* const’} but argument is of type ‘obj **’ {aka ‘struct <anonymous> **’} 13 | void f8(const obj *const *const ppo) {} | ~~~~~~~~~~~~~~~~~~~~~~~~^~~
void f0(obj **ppo) {} void f1(const obj **ppo) {} // void f2(obj const **ppo) {} // void f3(obj *const *ppo) {} void f4(obj **const ppo) {} void f5(const obj const **ppo) {} // void f6(const obj *const *ppo) {} // void f7(const obj **const ppo) {} // void f8(obj const *const *ppo) {} // void f9(obj const **const ppo) {} // void fa(obj *const *const ppo) {} void fb(const obj const *const *ppo) {} // void fc(const obj const **const ppo) {} // void fd(const obj *const *const ppo) {} // void fe(obj const *const *const ppo) {} // void ff(const obj const *const *const ppo) {} //
const obj **p
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)