Doch.
Mit Weak Symbols kann man sowas machen: /* locale.c */ void setlocale(int cat, const char* log) { ... } void __locale_specific_number_formatter(int n) { ... }
/* printf.c */ extern void __locale_specific_number_formatter(int); #pragma weak __locale_specific_number_formatter int printf(const char* fmt, ...) { // ... if (__locale_specific_number_formatter) __locale_specific_number_formatter(n); else /* hier den üblichen Zahlenausgabe-Dreizeiler */ }
Dann hat man den locale-spezifischen Formatierungskram nur dann im Code, wenn auch irgendwo setlocale aufgerufen wird.
Doch, *denn iostreams verwendet locales*. Auch dann, wenn man die ganzen Gimmicks nicht benötigt, sondern einfach nur einen 'const char*' Byte für Byte an die serielle Schnittstelle weitergegeben haben will.
Stefan