Различие сырцов для компиляции (на венде и на линуксе)

Модератор: Модераторы разделов

KukMan
Сообщения: 92
ОС: Kubuntu 7.10

Различие сырцов для компиляции

Сообщение KukMan »

Вот я так думаю. У программы для сохранения данных в среде виндовса и линукса просто разные методы. Когда в венде главные данные сохраняются в реестре, и, там, C:\Documents and Settings, а в среде линукс - ~/.name_of_program в текстовых файлах...Исходя из этого, и сырцы для разных платформ должны быть разными. Или же, чтобы обеспечить кроссплатформеность, есть стандартные либы, которые отличаются взависимости от оси, но предлагают одинаковый интерфейс для сохранениня данных. Пролейте свет на этот вопрос.

з.ы. Если компильнуть програму вместе с линковкой - получится один бинарик. Как тогда большинство програм состоит из некоторого числа разных файлов?
Это какаето опция при компилировании или как?
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Различие сырцов для компиляции

Сообщение drBatty »

KukMan писал(а):
08.12.2007 09:49
Вот я так думаю. У программы для сохранения данных в среде виндовса и линукса просто разные методы.

Там глубже отличие: даже что бы открыть простой файл нужно действовать по разному:
Разная FS, даже слэш повёрнут в другую сторону. И права доступа совсем другие, вот в DOS есть очень "полезный" режим открытия файлов - "как текст", поэтому приходится писать:

Код: Выделить всё

#ifdef MUST_DIE
file = fopen("C:\\Documents and Settings\\PUPKIN\\file.log", "ab");
#else
file = fopen("~/log_file", "a");
#endif


KukMan писал(а):
08.12.2007 09:49
з.ы. Если компильнуть програму вместе с линковкой - получится один бинарик. Как тогда большинство програм состоит из некоторого числа разных файлов?
Это какаето опция при компилировании или как?
Это зависит от файлов, может там иконки разные, которые программа открывает и рисует в своих окошках, а может библиотеки с кодом, которые можно намертво впаять в код, можно оставить в каталоге с программой, а можно попросить ОС поделится тем что у неё есть. Вот это уже от ключей зависит.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
KukMan
Сообщения: 92
ОС: Kubuntu 7.10

Re: Различие сырцов для компиляции

Сообщение KukMan »

А вот если сделать два различных проэкта. Один для венды другой для линукса? т.е. сначала написать скилет программы, используя только кросплатформенные фукнции. а потом уже те, которые нада использовать писать под определенной осью? и какой командой можно определить, на какой оси запущена программа? (вроде бы проще простого).
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Различие сырцов для компиляции

Сообщение drBatty »

KukMan писал(а):
08.12.2007 11:03
А вот если сделать два различных проэкта. Один для венды другой для линукса?
Так и делают, используя препроцессор(на C и С++), текст один, но некоторые места компилируются по разному, пример выше, если в начале файла написать #define MUST_DIE будет версия для windows, если не писать - нормальная.

KukMan писал(а):
08.12.2007 11:03
какой командой можно определить
А как вы запустите nix'вый бинарник под вынь???
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
KukMan
Сообщения: 92
ОС: Kubuntu 7.10

Re: Различие сырцов для компиляции

Сообщение KukMan »

:) ну по сути да. Но в языке есть средства, которые могут определить ось. типа как бы функция...Чтобы писать if(is_mustdie()) {#define MUST_DIE}
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Различие сырцов для компиляции

Сообщение drBatty »

KukMan писал(а):
08.12.2007 12:37
:) ну по сути да. Но в языке есть средства, которые могут определить ось. типа как бы функция...Чтобы писать if(is_mustdie()) {#define MUST_DIE}
В языке таких средств нет(и быть не может). Есть в компиляторе. Ты можешь сделать так:

Код: Выделить всё

#ifdef _MSC_VER
#   define MUST_DIE
#endif
Компиляторы от M$ обычно _MSC_VER определяют.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
KukMan
Сообщения: 92
ОС: Kubuntu 7.10

Re: Различие сырцов для компиляции

Сообщение KukMan »

аа. понятно. и еще помогите с локалями в boost::regexp (соседняя тема)...
Спасибо сказали: