fopen_s не был объявлен в области (C ++: кодовые блоки) - PullRequest
0 голосов
/ 23 января 2020

Я новичок и пытаюсь прочитать файл, используя fopen_s, но ошибка показывает, что

Build: Debug in histimg (compiler: GNU GCC Compiler) ===|

E:\CCS\histimg\main.cpp|19|error: 'fopen_s' was not declared in this scope|

Код:

 fopen_s(&fp,"C:\\Users\\asus\\Pictures\\SavedPictures\\1.png", "rb");
 if (fp == 0)
 {
      cout << "Open image failed!" << endl;
      exit(0);
 }

Не могли бы вы подсказать мне, как его решить. Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Согласно https://en.cppreference.com/w/c/io/fopen

Как и для всех функций с проверкой границ, fopen_s гарантированно будет доступен, только если STDC_LIB_EXT1 определяется реализации и если пользователь определяет STDC_WANT_LIB_EXT1 для целочисленной константы 1, прежде чем включать stdio.h.

0 голосов
/ 23 января 2020

fopen_s не является частью стандартной библиотеки C ++. Это расширение MSV C -specifi c или дополнительная часть стандартной библиотеки C.

Если ваш компилятор не поддерживает его как расширение, его нельзя использовать.

Вместо этого используйте стандартную библиотеку потока файлов C ++ <fstream>, т.е. std::fstream.

...