gpt4 book ai didi

c++ - 如何使 Visual Studio C++ 2010 编译行为像 gcc/g++? (或相反亦然)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:15 27 4
gpt4 key购买 nike

假设您有以下简单的 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;
}

这可以通过 Visual Studio C++ 2010 正常编译。

但是,在基于 Linux 的系统上,如果我执行 make main 并编译,我们会得到一个预期的错误,因为我们没有调用 c_str()字符串常量,像这样:

ifstream somefile(FILENAME.c_str());

众所周知,并在 this SO thread 中进行了描述.

如何让 VS 像 gcc/g++ 一样运行并为上面的代码引发编译错误?或者,我怎样才能让 gcc/g++ 像 VS 一样运行并编译上面的代码而不会出错? (升级我的 gnu 编译器是一件简单的事情吗?)

(我不认为禁用编译器扩展是一个解决方案,因为我已经这样做了,而且它仍然编译没有错误。)

最佳答案

在这种情况下,Visual Studio 的行为符合 C++11 标准 (it works on g++ now, too)。我不确定你为什么要这样做,但你可能需要编辑 MSVC 的 header (不可取,而且相当激烈)。

奇怪的是,they don't write it in their documentation .你能检查实际上调用了哪个构造函数吗?

关于c++ - 如何使 Visual Studio C++ 2010 编译行为像 gcc/g++? (或相反亦然),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7689534/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com