Может ли isdigit законно зависеть от локали в C
В разделе, посвященном setlocale, стандарт ANSI C в сноске утверждает, что единственными функциями ctype.h, на поведение которых не влияет текущая локаль, являются isdigit и isxdigit.
Реализация isdigit в Microsoft зависит от локали, потому что, например, в локалях, использующих кодовую страницу 1250, isdigit возвращает ненулевое значение только для символов в диапазоне 0x30 ('0') - 0x39 ('9'), тогда как в локалях, использующих кодовую страницу 1252 isdigit также возвращает ненулевое значение для цифр верхнего индекса 0xB2 ('²'), 0xB3 ('³') и 0xB9 ('¹').
Является ли Microsoft нарушением стандарта C, делая язык isdigit зависимым?
В этом вопросе меня в первую очередь интересует C90, которому Microsoft утверждает, что он соответствует, а не C99.
Дополнительный фон:
В собственной документации Microsoft о setlocale неверно указано, что на isdigit не влияет часть языкового стандарта LC_CTYPE.
Раздел стандарта C, который охватывает функции ctype.h, содержит некоторые формулировки, которые я считаю неоднозначными:
Поведение этих функций зависит от текущей локали. Те функции, которые имеют специфичные для локали аспекты, только когда не в локали "C", отмечены ниже.
Я считаю это неоднозначным, потому что неясно, что он пытается сказать о таких функциях, как isdigit, для которых нет замечаний о специфичных для локали аспектах. Можно попытаться сказать, что такие функции должны зависеть от локали, и в этом случае реализация isdigit от Microsoft будет в порядке. (За исключением того, что сноска, которую я упоминал ранее, кажется, противоречит этой интерпретации.)