Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926

Есть ли стандартные значения для препроцессора для разных операционных систем?

26.12.2010, 22:16. Показов 3394. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим,необходимо сделать код на C более переносимым на другие операционные системы. Существуют ли какие-то стандартные define-ы ,которые при компиляции определяет сам компилятор?
навроде
C
1
#define WIN32
и прочие? То есть если есть некий конфигурационный файл config.h,то как сделать так,чтобы при компиляции кодов на другой ОС не приходилось править этот файл вручную,определяя директивы для операционных систем? Может,есть какие-то стандартные значения,которые есть в компиляторе,библиотеках,или где-то ещё ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.12.2010, 22:16
Ответы с готовыми решениями:

Энкодинг латинских символов для консоли разных операционных систем
Всем привет, всем известная проблема енкодинга. Но как её грамотно решить для разных терминалов разных ОС ? Например для вывода латинских...

Одно оформление для всех операционных систем
Как сделать, чтобы оформление интерфейса было одинаковым во всех операционных системах?

Выбор темы для курсовой по администрированию операционных систем
В универе сказали, что предстоит курсовая по администрированию ОС. Но темы курсовых нам почему-то так и не дали, сказав: "подходите со...

7
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
27.12.2010, 00:13
директивы 100% есть но вот как о них узнать, что почитать, присоединяюсь к вопросу
0
37 / 36 / 4
Регистрация: 08.08.2010
Сообщений: 162
27.12.2010, 01:15
Цитата Сообщение от #pragma Посмотреть сообщение
навроде
C
1
#define WIN32
Вы удивитесь

Я проверяю вот так:
C
1
2
3
4
5
6
#if defined(WIN32) || defined(__MINGW32__)
    /* ... */
#endif
#ifdef __linux__
    /* ... */
#endif
Но в основном, стараюсь делать так, чтобы ничего переопределять не пришлолсь.
Почти всегда это определение имени разделяемлй библиотеки - lib.dll для винды, или lib.so для линукса.

Есть и метки для каждого компиляторпа, но я ничем кроме (GCC||MinGW) не пользуюсь, потому точно не знаю
1
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
27.12.2010, 16:20
Для написания портабельный программ используют дополнительные средства типа того же configure - http://en.wikipedia.org/wiki/Configure_script

Суть примерное такая, что запущенный скрипты готовит файл config.h и makefile под конкретную ОС и конкретные выбранные параметры сборки
2
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
27.12.2010, 16:50
Цитата Сообщение от #pragma Посмотреть сообщение
Может,есть какие-то стандартные значения,которые есть в компиляторе,библиотеках,или где-то ещё ?
Есть, но как правило всё это выясняется либо методом тыка, либо прочтением документации на каждый конкретный компилятор. Самым надёжным способом было бы и вправду использовать configure, но во многих случаях ради какой-то мелочи проще завести макрос, чем возиться с configure

Компилятор gcc под linux включает макрос __linux__
Компиляторы gcc и SunCC под солярисом включают макрос __sun
Большинство компиляторов под unix-образные системы включают макрос __unix
Компилятор gcc под каждый процессор взводит свои макросы типа __i386__, __sparc__, __mips__ и т.п.

Ничего стандартного по этому поводу вроде бы как нет. То, что есть, можно назвать "негласными соглашениями" или что-то типа того
2
Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
27.12.2010, 21:31  [ТС]
Evg, добавь,пожалуйста,эту информацию в свои статьи,если будет время
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
27.12.2010, 22:09
Цитата Сообщение от #pragma Посмотреть сообщение
Evg, добавь,пожалуйста,эту информацию в свои статьи,если будет время
В разделе 8 оно уже было помечено. Ссылку только добавил
2
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
05.07.2013, 14:48
Добрые люди ещё одну ссылку до кучи подкинули:
http://stackoverflow.com/quest... sor-macros

Добавлено через 1 минуту
Ссылка растёт из предыдущей ссылки, но её не заметно, так что продублирую
http://sourceforge.net/p/prede... ngSystems/
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.07.2013, 14:48
Помогаю со студенческими работами здесь

Эта версия не предназначена для серверных операционных систем
привет всем. я поставил windows 7 x64 и хочу поставить антивирус NOD-32(х64) но он пишет что: Эта версия не предназначена для серверных...

Как обеспечить переносимость приложения для операционных систем Windows 7
Заранее прошу извинить за мою безграмотность. Я создал приложение и теперь хочу, чтобы оно запускалось на других компьютерах. На них...

Нестабильная работа двух операционных систем WIN 7 X32 и x64 на разных винчестерах
Доброго дня ! Проблема следующая: Есть комп с 2-мя жёсткими дисками SSD и HDD -На SSD поставил WIN 7 32 - всё работает отлично...

Вывод названий операционных систем для компьютеров, имена которых находятся в списке в текстовом файле
Добрый вечер. Помогите разобраться (PowerShell стал изучать не давно). По заданию в файле Spisok.txt находится список имен...

Какого минимального объёма диск требуется для установки на него трёх операционных систем Windows?
Доброе утро всем.Решил я поставить отдельный диск под операционные системы.Но надо знать,сколько и какая операционка кушает места.Там...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru