Свести все к одному интерфейсу можно, Atmel Software Framework наглядный пример, до какого маразма можно при этом дойти. С другой стороны, есть и положительные примеры - библиотеки Cyclone TCP и SNMP++ v3 портируются куда угодно сравнительно просто, но там еще и условная компиляция используется.