Вот я так думаю. У программы для сохранения данных в среде виндовса и линукса просто разные методы. Когда в венде главные данные сохраняются в реестре, и, там, C:\Documents and Settings, а в среде линукс - ~/.name_of_program в текстовых файлах...Исходя из этого, и сырцы для разных платформ должны быть разными. Или же, чтобы обеспечить кроссплатформеность, есть стандартные либы, которые отличаются взависимости от оси, но предлагают одинаковый интерфейс для сохранениня данных. Пролейте свет на этот вопрос.
з.ы. Если компильнуть програму вместе с линковкой - получится один бинарик. Как тогда большинство програм состоит из некоторого числа разных файлов?
Это какаето опция при компилировании или как?
Различие сырцов для компиляции (на венде и на линуксе)
Модератор: Модераторы разделов
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Различие сырцов для компиляции
Там глубже отличие: даже что бы открыть простой файл нужно действовать по разному:
Разная FS, даже слэш повёрнут в другую сторону. И права доступа совсем другие, вот в DOS есть очень "полезный" режим открытия файлов - "как текст", поэтому приходится писать:
Код: Выделить всё
#ifdef MUST_DIE
file = fopen("C:\\Documents and Settings\\PUPKIN\\file.log", "ab");
#else
file = fopen("~/log_file", "a");
#endif
Это зависит от файлов, может там иконки разные, которые программа открывает и рисует в своих окошках, а может библиотеки с кодом, которые можно намертво впаять в код, можно оставить в каталоге с программой, а можно попросить ОС поделится тем что у неё есть. Вот это уже от ключей зависит.
-
- Сообщения: 92
- ОС: Kubuntu 7.10
Re: Различие сырцов для компиляции
А вот если сделать два различных проэкта. Один для венды другой для линукса? т.е. сначала написать скилет программы, используя только кросплатформенные фукнции. а потом уже те, которые нада использовать писать под определенной осью? и какой командой можно определить, на какой оси запущена программа? (вроде бы проще простого).
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Различие сырцов для компиляции
Так и делают, используя препроцессор(на C и С++), текст один, но некоторые места компилируются по разному, пример выше, если в начале файла написать #define MUST_DIE будет версия для windows, если не писать - нормальная.
А как вы запустите nix'вый бинарник под вынь???
-
- Сообщения: 92
- ОС: Kubuntu 7.10
Re: Различие сырцов для компиляции

-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Различие сырцов для компиляции
В языке таких средств нет(и быть не может). Есть в компиляторе. Ты можешь сделать так:
Код: Выделить всё
#ifdef _MSC_VER
# define MUST_DIE
#endif
-
- Сообщения: 92
- ОС: Kubuntu 7.10
Re: Различие сырцов для компиляции
аа. понятно. и еще помогите с локалями в boost::regexp (соседняя тема)...