> Jó, mind1, nem akarok ezen tovább rugózni amúgy, kb. megbeszéltük.
Szerintem sincs értelme ezt a részt tovább ragozni, már csak azért sem, mert C-ben ezt a hibát el sem követheti az ember, hiszen ott nincs operator overload.
> Ha csak egy plusz elágazásról beszélünk, akkor az be tud inline-olódni (annak minden hátrányával együtt), szóval súlyos overheadnek azért nem mondanám. Ill., nyilván csak akkor van értelme azt a verziót meghívni, ha nem tudjuk kizárni, hogy fennállhat a hiba lehetősége. Persze ezzel visszajuthatunk az elejére, hogy mikor melyik verziót kell használni, és ha a hibakezelés nélküli verziót használjuk, akkor ott a baj.
Mármint, hogy
      
  int valami_unsafe(void *x)
{
	// mittudomen
	return 0;
}
int valami_safe(void *x)
{
	if (x == NULL)
	{
		return 1;
	}
	return valami_unsafe(x);
}valami_safe() függvénybe az egész valami_unsafe() inline-olódik a binárisban? Akkor azzal duplikáltad az egész függvény kódját a binárisban - már ha feltételezzük, hogy mind a kettőre szükség van - ami egy idő után nagyon sokra fog rúgni. Persze, ha az unsafe verziót nem hívjuk meg sehol, akkor az nem kerül külön bele, de akkor meg a végén - a binárisban - ugyanazt kaptad, mint ha csak simán lett volna egy elágazásod, hiszen a call-t inline-osította. Akkor már nem célszerűbb ezt makróval kikapcsolhatóvá tenni?int valami(void *x)
{
#ifndef VALAMI_RELEASE
	if (x == NULL)
	{
		return 1;
	}
#endif
	// mittudomen
	return 0;
}