Форум: "Прочее";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];
ВнизC++ Найти похожие ветки
← →
T (2007-03-01 19:28) [0]Я хочу написать консольное приложение на C++. Смогу ли откомпилировать код Linux или FreeBSD, не изменяя его. Или придется переписывать? Из системных вещей, которые будет использовать программа - это только работа с сокетами.
← →
Celades © (2007-03-01 19:54) [1]если будешь использовать стандартные средста, то менять ничего не надо.
← →
Zeqfreed © (2007-03-01 19:55) [2]Если использовать консоль только для простого последовательного вывода информации (использовать только встроенные в стандартную библиотеку Си функции), то переписывать не придется. Только парочку условных компиляций для работы с сокетами.
← →
Celades © (2007-03-01 19:55) [3]а вот виндовые сокеты не переносимы. попробуй cygwin
← →
Romkin © (2007-03-01 21:51) [4]Celades © (01.03.07 19:54) [1] Не факт совершенно. В С++ много неоднозначностей, и разные компиляторы интерпретируют их по-разному. Плюс - особенности ОС, те же входные/выходные потоки. Например, при подаче во входной поток символа EOF (код 26, Ctrl+Z), win прервет ввод, nix - нет :)
← →
@!!ex © (2007-03-01 22:22) [5]Все зависит от того, как пишешь и что юзаешь.
У нас(с братом в свое время писали) есть проект, который одинаково без проблем компилиться и студией и GCC.
Основные вещи - через стандартные библиотеки С.
То что платформозависимо(сеть и работа с файлами) - в отдельный юнит с дейфайнами для Винды и для НИксов. Хотя я в этом еще плаваю...
← →
TUser © (2007-03-02 06:40) [6]Людям удается, но, разумеется, без сокетов. Запомни - windows.h тебе подключать нельзя. А так - gcc и bcc32 почти полностью совместимы.
← →
Rouse_ © (2007-03-02 09:32) [7]
> Смогу ли откомпилировать код Linux или FreeBSD, не изменяя его
Если будешь использовать конструкции поддерживаемые всеми ОС, то почему бы и нет? К примеру раз сокеты у тебя то PF_PACKED или ETH_P_IP под Windows напрямую использовать нельзя.
← →
Alkid © (2007-03-02 09:46) [8]
> Я хочу написать консольное приложение на C++. Смогу ли откомпилировать
> код Linux или FreeBSD, не изменяя его. Или придется переписывать?
> Из системных вещей, которые будет использовать программа
> - это только работа с сокетами.
Всё просто, используй только стандартную библиотеку ввода-вывода (обычную С-шную или потоковую С++-ную), STL, BOOST.
Что касается "особенностей компиляторов", то сейчас основные компиляторы (VS, gcc, watcom) соответсвуют стандарту C++ достаточно хорошо, что бы в 99% случаев не напороться на несовместимось. Только какждый из этих копиляторов поддерживает свои расширения к языку (типа Microsoft Specific). Их использовать нельзя и при компиляции советую явно указать компилятору, что бы он отключил свой расширенный синтаксис.
Если приложение сложное, то наверняка у тебя появятся куски кода специфичные для платформы. Пути решения два:
1. Условная компиляция
2. Выделение платформозависимого кода в отдельные классы, реализующие один интерфейс. Короче PIMPL.
Так же крайне рекомендую разобраться с такой полезной утилитой, как make.
← →
Alex Konshin © (2007-03-02 10:26) [9]Можно все компилировать одним компилятором - GCC.
На Windows можно использовать MinGW или Cygwin. И там, и там есть GCC. Под Cygwin размер exe будет больше и помимо этого он может требовать дополнительные DLL.
← →
data © (2007-03-02 11:33) [10]
> Alex Konshin © (02.03.07 10:26) [9]
>
> Можно все компилировать одним компилятором - GCC.
я так и делаю. У меня одни и теже исходники и для Вин и для Линукс. Советую написать отдельные объекты для работы с сокетами под каждую из операционок, но с одинаковым интерфейсом, прописаном в h файле, и при сборке использовать для Вин и для Лин нужную реализацию обекта (подцепить нужный файл в make). Советую именно такой способ, он по моему опыту, удобнее условной компиляции.
← →
Сало © (2007-03-02 14:47) [11]
> Можно все компилировать одним компилятором - GCC.
> На Windows можно использовать MinGW или Cygwin. И там, и
> там есть GCC. Под Cygwin размер exe будет больше и помимо
> этого он может требовать дополнительные DLL.
Если бы все было так просто. Попробуйте MinGW скомпильнуть Firebird, без проблем компилящийся gcc под Linux.
← →
Некто © (2007-03-02 20:49) [12]Можно. Правда такая фигня получится. :)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c