Portál AbcLinuxu, 4. května 2025 19:20
bbwrite(tfd3, iobuf3, (void **)&ciobp3, &ciobl3, sizeof(iobuf3), buf, (size_t)i);problem je cast (void **). Dost tomu nerozumiem, lebo ciobp3 je pointer na char a bbwrite ocakava typ (void **). Cize malo by to byt v poriadku. Ajhla gcc si mysli nieco ine. Ma niekto nejaky napad? Diki moc Tom.
char**
na void**
v podstatě znamená, že umožňujete skrytě přetypovat void*
na char*
. Je to podobné, jako že implicitně lze provádět konverzi T*
na const T*
, ale už ne T**
na const T**
.
T**
na const T**
. Novej typ je omezenejsi, tak v cem je problem ???
const
pomocí aliasu:
const T* cp = &ro_data; T* np = &rw_data; const T** pcp = &cp; T** pnp = &np; // tohle nemůžu: *cp = x; // tohle taky nemůžu np = cp; // nelze *np = x; // OK // ale tohle by byl o vlastně totéž pcp = pnp; // nelze *pcp = cp; // OK - jenže teď jsem vlastně provedl 'np = cp' *np = x; // OK
const
omezuje na const char*
a to jeste jenom, kdyz me je vnuti kompilator
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.