Aviso C4996: Esta função ou variável pode não ser segura - em comparação com o GCC no POSIX

Percebo que os compiladores MS emitem avisos "obsoletos" paracstdlib funções comogetenv. A MS inventou seu próprio padrão, como_dupenv_s.

Questão 1

AFAIK, a principal coisa "insegura" é sobre reentrada *. Como o CRT da MS está marcado como "multiencadeado" (/MT), por que eles não substituemgetenv com a versão reentrante e segura para threads? É como se alguém dependesse de um comportamento inseguro?

Questão 2

Eu compilei o mesmo código com o GCCg++ -Wall -Wextra -Weff++ -pedantic foo.cpp e não gera nenhum aviso. Então eu acho que isso não é um problema no POSIX? Como isso é resolvido? (OK, talvez eles tenham mudado o comportamento degetenv, seria bom ter isso confirmado).

* É uma generalização excessiva dizer que é apenas uma questão de reentrada. Claro que temos coisas comostrncpy_s que altera completamente a assinatura e lida com o tamanho do buffer. Mas não muda o cerne desta questão

questionAnswers(3)

yourAnswerToTheQuestion