未找到 c++11 上的 popen
popen on c++11 not found
我正在尝试 运行 以可移植的方式从 c++ 程序中获取 gnuplot。具有讽刺意味的是 WIN_32 我没有问题,但我的编译器 (visual studio 2015) 无法识别我试图用于其他 OS。 C++11 中不存在 popen() 吗?是否有等效项或者我必须更改标准?
此编译并 运行s in windows visual studio 2015 :
#include <stdio.h>
#include <stdlib.h>
int main()
{
_popen(" ", "w");
return 0;
}
这不编译:
#include <stdio.h>
#include <stdlib.h>
int main()
{
popen(" ", "w");
return 0;
}
错误
错误 C3861 'popen': 找不到标识符
归根结底,我想要
这样的行为
#include <stdio.h>
#include <stdlib.h>
int main()
{
#ifdef WIN_32
_popen(" ", "w");
#else
popen(" ", "w");
#endif
return 0;
}
我希望这个程序在 Linux 和 Mac 上使用时在 g++ 中重新编译,但我想使用 msvc14 在 windows
上编译
popen()
在 C++(任何版本)中确实不存在。它由 posix 定义,因此在大多数类似 unix 的操作系统上可用。
windows 上没有 popen()
函数,但是有等效的 _popen() 函数可以使用
MSVC 预先定义了 _WIN32
常量,你可以用它来进行条件编译,例如
#ifdef _WIN32
_popen(" ", "w");
#else
popen(" ", "w");
#endif
我正在尝试 运行 以可移植的方式从 c++ 程序中获取 gnuplot。具有讽刺意味的是 WIN_32 我没有问题,但我的编译器 (visual studio 2015) 无法识别我试图用于其他 OS。 C++11 中不存在 popen() 吗?是否有等效项或者我必须更改标准?
此编译并 运行s in windows visual studio 2015 :
#include <stdio.h>
#include <stdlib.h>
int main()
{
_popen(" ", "w");
return 0;
}
这不编译:
#include <stdio.h>
#include <stdlib.h>
int main()
{
popen(" ", "w");
return 0;
}
错误
错误 C3861 'popen': 找不到标识符
归根结底,我想要
#include <stdio.h>
#include <stdlib.h>
int main()
{
#ifdef WIN_32
_popen(" ", "w");
#else
popen(" ", "w");
#endif
return 0;
}
我希望这个程序在 Linux 和 Mac 上使用时在 g++ 中重新编译,但我想使用 msvc14 在 windows
上编译popen()
在 C++(任何版本)中确实不存在。它由 posix 定义,因此在大多数类似 unix 的操作系统上可用。
windows 上没有 popen()
函数,但是有等效的 _popen() 函数可以使用
MSVC 预先定义了 _WIN32
常量,你可以用它来进行条件编译,例如
#ifdef _WIN32
_popen(" ", "w");
#else
popen(" ", "w");
#endif