Wiele bezpiecznych funkcji firmy Microsoft znajduje się w załączniku K do standardu C11, ale nie jest powszechnie obsługiwane, więc przenośność nadal stanowi problem. W niektórych zastosowaniach istnieje potrzeba poprawy bezpieczeństwa; może wsparcie poprawi się w przyszłości.
I przeszłość, zrobiłem to tak:
#define fopen_s(fp, fmt, mode) *(fp)=fopen((fmt), (mode))
Makro jest proste i prosto do przodu, wystarczająco dobry na coś szybkiego i brudne, ale nie zapewnia zachowania wyjątkiem fopen_s i nie zapewni bezpieczeństwa prawdziwej funkcji fopen_s.
@ Podejście funkcji ALE B powyżej częściowo odtwarza prawidłowe zachowanie po awarii; zwraca errno (= EINVAL). Jego podejście można jeszcze bardziej rozszerzyć, generując wyjąteko nieprawidłowym parametrze, aby w pełni odtworzyć zachowanie fopen_s.
Podobny problem [tutaj] (http://stackoverflow.com/questions/14386/fopen-deprecated-warning). – luvieere