Jak dodać nasycenie w C?

Jaki jest najlepszy (najczystszy, najbardziej wydajny) sposób zapisu dodawania nasycenia w C?

Funkcja lub makro powinno dodać dwa niepodpisane wejścia (wymagają zarówno wersji 16-, jak i 32-bitowych) i zwrócić wszystkie bity-jeden (0xFFFF lub 0xFFFFFFFF), jeśli suma przepełni się.

Target to x86 i ARM przy użyciu gcc (4.1.2) i Visual Studio (tylko dla symulacji, więc implementacja awaryjna jest w porządku).

questionAnswers(17)

yourAnswerToTheQuestion