Advertencia C4996: esta función o variable puede no ser segura, en comparación con GCC en POSIX
Noto que los compiladores de MS dan advertencias "obsoletas" paracstdlib
funciones comogetenv
. MS ha inventado su propio estándar como_dupenv_s
.
AFAIK lo principal "inseguro" es sobre reentrada *. Dado que el CRT de MS está marcado como "multiproceso" (/MT
), ¿por qué no solo reemplazangetenv
con la versión reentrante y segura para subprocesos? ¿Es como si alguien dependiera del comportamiento inseguro?
Compilé el mismo código con GCCg++ -Wall -Wextra -Weff++ -pedantic foo.cpp
y no produce ninguna advertencia. ¿Entonces supongo que esto no es un problema en POSIX? ¿Cómo se resuelve esto? (OK, tal vez simplemente cambiaron el comportamiento degetenv
, sería bueno tener esto confirmado).
* Es una generalización excesiva decir que solo se trata de reentrada. Por supuesto que tenemos cosas comostrncpy_s
que cambia la firma por completo y trata el tamaño del búfer. Pero no cambia el núcleo de esta pregunta