¿Puede isdigit legítimamente ser local dependiente en C
En la sección que cubre setlocale, el estándar ANSI C establece en una nota al pie que las únicas funciones ctype.h cuyo comportamiento no se ve afectado por el entorno local actual son isdigit e isxdigit.
La implementación de Microsoft de isdigit depende de la configuración regional porque, por ejemplo, en configuraciones regionales que usan la página de códigos 1250 isdigit solo devuelve valores distintos de cero para caracteres en el rango 0x30 ('0') - 0x39 ('9'), mientras que en configuraciones regionales que usan la página de códigos 1252 isdigit también devuelve valores distintos de cero para los dígitos de superíndice 0xB2 ('²'), 0xB3 ('³') y 0xB9 ('¹').
¿Viola Microsoft el estándar C al hacer que la configuración regional de isdigit dependa?
En esta pregunta, estoy principalmente interesado en C90, que Microsoft afirma cumplir, en lugar de C99.
Antecedentes adicionales:
La propia documentación de Microsoft sobre setlocale indica incorrectamente que isdigit no se ve afectado por la parte LC_CTYPE de la configuración regional.
La sección del estándar C que cubre las funciones ctype.h contiene algunas palabras que considero ambiguas:
El comportamiento de estas funciones se ve afectado por la configuración regional actual. A continuación se indican aquellas funciones que tienen aspectos específicos de la configuración regional cuando no están en la configuración regional "C".
Considero que esto es ambiguo porque no está claro qué está tratando de decir sobre funciones como isdigit para las que no hay notas sobre aspectos específicos de la localidad. Podría estar tratando de decir que se debe suponer que tales funciones dependen de la configuración regional, en cuyo caso la implementación de isdigit de Microsoft estaría bien. (Excepto que la nota al pie que mencioné anteriormente parece contradecir esta interpretación).