Программа может не скомпилироваться в Cygwin с использованием gcc -std=c++11
. Заголовки компилируются ОК (если, например, boost/asio.hpp, они пытаются использовать отсутствующее определение). Теперь, поскольку макросы Cygwin's #ifdef
обходят некоторые определения функций в среде C++ 11, программы могут не работать. Этого не происходит, когда одни и те же исходные файлы аналогично компилируются в Fedora Linux.Почему некоторые системные функции не определены в Cygwin при использовании gcc -std = C++ 11?
В этом примере программа не скомпилировать с помощью GCC -std = C++ 11 вариант:
#include <boost/asio.hpp>
int main() { return 0; }
я впервые столкнулся с этим, обнаружив, что вышеуказанная программа не компилируется, а затем нашел еще более похожи проблемы при перекомпиляции существующего кода с использованием обновленного стандарта.
Включенные разделы, которые я обнаружил, были разбиты, указаны в ответе.
[редактировать исправить опечатки.]
Почему вы не используете '-std = gnu ++ 11' вместо этого? –
Спасибо @MarkGlisse. Я использовал параметр 'C++ 11', который я нашел в документации. Я не понимал, что существует другой способ указания нового стандарта, пока вы не указали его (ваш метод лучше. Проблема не будет повторяться при обновлении или переустановке boost.) – FNE