fopen_s ubuntu 下未解决

fopen_s not resolved under ubuntu

我想打开文件,所以我使用 ubuntu 下的 fopen_s 功能。虽然我 #include <stdio.h> 如此处所读 http://en.cppreference.com/w/c/io/fopen,但我得到错误函数未在范围内声明。 请帮助我我做错了什么,以及如何解决运行?

FILE *fp;
fopen_s(&fp, strFilename.c_str(), "rb");
if (fp == NULL){
    cout << "cannot open " << strFilename.c_str();
    return false;
}

fclose(fp);

在 Linux 上搜索 glibc 没有发现 fopen_s() 在 Linux.

上的 glibc 中实现的证据

我发现 POSIX specification 中没有提到 fopen_s()。在我看来 fopen_s() 是一个不可移植的库函数,仅在 Microsoft Windows.

上实现

尝试使用 fopen()

#ifdef __unix
#define fopen_s(pFile,filename,mode) ((*(pFile))=fopen((filename),  (mode)))==NULL
#endif

参考:Is there a way to use fopen_s() with GCC or at least create a #define about it?