Скажем, у вас есть следующий простой файл 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());
Как обычно известно и описано в этом SO потоке .
Как я могу заставить VS вести себя как gcc / g ++ и вызвать ошибку компиляции для кода выше? Или как я могу заставить gcc / g ++ вести себя как VS и скомпилировать вышеупомянутое без ошибок? (Это простой вопрос обновления моего компилятора gnu?)
(я не верю, что отключение расширений компилятора - это решение, так как я это сделал, и оно все равно компилируется без ошибок.)