[Development] Compiler warnings

Thiago Macieira thiago.macieira at intel.com
Fri Oct 17 20:23:03 CEST 2014


On Friday 17 October 2014 19:26:56 Mathias Hasselmann wrote:
> > Shoot the developer who abused the API.
> > 
> > If the function accepts enum values 1 and 2 and you pass a 3, you deserve
> > the undefined behaviour.
> > 
> > That is the same as passing a bool that doesn't contain exactly values 0
> > or 1 or passing an uninitialised pointer.
> > 
> > We have to handle all regular conditions. We don't have to guard against
> > stupidity.
> 
> I don't think this example has to do with stupidity. To me this just
> seems like a minimal example of typical integration problems that happen
> in real world. Far fetching I'd talk about distributed services, reading
> files written by a different program version, and such. Also Qt already
> deals with such issues where it is obvious:
> 
>      const char * QVariant::typeToName(int typeId) [static]
>      Converts the int representation of the storage type, typeId, to its
>      string representation.

That's not a good example.

My point is that an API that is documented to have only values 1 and 2 should 
not have to handle value 3. That is not the case of dealing with metatypes. 
That's why in most cases we actually use ints, as shown above, than the enums 
from QVariant and QMetaType.

If you abuse an API, you deserve crashes. I will not support changes to Qt 
that try to deal with stupidities.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center




More information about the Development mailing list