Как заставить компиляцию Visual Studio C ++ 2010 вести себя как gcc / g ++? (Или наоборот)

Допустим, у вас есть следующий простой main.cpp file:

#include 
#include 
#include 

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());

Как comm только известна и описана в этой ветке SO .

Как заставить VS вести себя как gcc / g ++ и вызвать ошибку компиляции для приведенного выше кода? Или как я могу заставить gcc / g ++ вести себя как VS и скомпилировать вышеуказанное без ошибок? (Это простой вопрос обновления моего компилятора GNU?)

(Я не верю, что отключение расширений компилятора - это решение, поскольку я сделал это, и он по-прежнему компилируется без ошибок.)

6
задан Community 23 May 2017 в 12:27
поделиться