yba*_*kos 6 c++ visual-studio-2010 visual-c++
假设您有以下简单的main.cpp文件:
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
int main() {
const string FILENAME = "foo.txt";
ifstream somefile(FILENAME);
populations.close();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这可以通过Visual Studio C++ 2010编译.
但是,在基于Linux的系统上,如果我执行make main并编译,我们得到一个预期的错误,因为我们没有调用c_str()字符串常量,如下所示:
ifstream somefile(FILENAME.c_str());
Run Code Online (Sandbox Code Playgroud)
众所周知,并在此SO线程中进行了描述.
如何使VS像gcc/g ++一样运行并为上面的代码引发编译错误?或者,我怎样才能让gcc/g ++像VS一样运行并编译上面没有错误?(升级我的gnu编译器是一件简单的事吗?)
(我不相信禁用编译器扩展是一个解决方案,因为我已经这样做了,它仍然可以编译而没有错误.)
在这种情况下,Visual Studio在C++ 11标准方面表现正确(它现在也适用于g ++).我不确定你为什么要这样做,但你可能需要编辑MSVC的标题(不可取而且相当激烈).
但奇怪的是,他们没有在文档中写出来.你能检查一下哪个构造函数实际被调用了吗?
它是可作为较新的C++标准的一部分.
要禁用,请添加
#define _HAS_CPP0X 0
Run Code Online (Sandbox Code Playgroud)
在您的包含之前的顶部.
| 归档时间: |
|
| 查看次数: |
1786 次 |
| 最近记录: |