Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.17.186.218] |
|
Сообщ.
#1
,
|
|
|
Программа может запускаться в одной из двух ОС. Нужна функция или алгоритм определения запущенной ОС.
|
Сообщ.
#2
,
|
|
|
Q_OS_WIN
Q_OS_LINUX |
Сообщ.
#3
,
|
|
|
Цитата shm @ Q_OS_WIN Q_OS_LINUX Это "подсказки" компилятору какие куски кода использовать под целевую систему - это не определение. Определять можно так: 1) попробовать запустить команду VER, если успешно - значит получишь версию венды 2) попробовать запустить команду uname -a, если успешно - значит получишь версию *nix 3) а можно забыть про первые два пункта и заюзать QSysInfo |
Сообщ.
#4
,
|
|
|
Цитата JoeUser @ это не определение Шо значит не определение? #ifdef Q_OS_WIN std::cout << "Windows"; #endif |
Сообщ.
#5
,
|
|
|
ну, наверное, имелось ввиду чтоб прям версия системы определялась. но в общем это нафиг нужно. как правило:
#ifdef _WIN32 |
Сообщ.
#6
,
|
|
|
Цитата shm @ Шо значит не определение? Это указание на целевую платформу в compile-time. Челу же нужно определение в рантайме. Вот пример. Допустим таки удастя запустить линух прогу под вендой. Тогда такая линух-программа будет бодрячком рапортовать "я работаю под линухом", а это неверно. В рантайме с помощью QSysInfo - должно быть все ровно. |
Сообщ.
#7
,
|
|
|
Цитата _lcf_ @ как правило: "_WIN32" "_WIN64" в MinGW и g++ есть ещё такая штука как "__linux__" Добавлено Цитата JoeUser @ указание на целевую платформу в compile-time Вот такого я не умею Это получается, один и тот же собранный файл, например *.exe будет исполняемым (и соответственно полноценно работать) и на Win и на Linux одновременно? |
Сообщ.
#8
,
|
|
|
Цитата VisualProg @ Это получается, один и тот же собранный файл, например *.exe будет исполняемым (и соответственно полноценно работать) и на Win и на Linux одновременно? Это невозможно. Допустим есть два исполняемых файла, все равно надо понять какой запускать. |
Сообщ.
#9
,
|
|
|
Цитата JoeUser @ Челу же нужно определение в рантайме. С чего ты взял? |
Сообщ.
#10
,
|
|
|
хм, а что, в процессе выполнения система может изменится?
|
Сообщ.
#11
,
|
|
|
JoeUser рассматривает какой-то высосаный из пальца случай, когда прога запускается под эмулятором окружения ОС. К слову, я не уверен, что в этом случае
Цитата JoeUser @ QSysInfo - должно быть все ровно. |
Сообщ.
#12
,
|
|
|
Цитата JoeUser @ Это указание на целевую платформу в compile-time. Челу же нужно определение в рантайме. Во-первых, это нигде не сказано. Во-вторых, что мешает написать так? std::string os_name() { #ifdef Q_OS_WIN return "Windows"; #else return "Linux"; #endif } |
Сообщ.
#13
,
|
|
|
Цитата shm @ С чего ты взял? Так ясно же написано: Программа может запускаться в одной из двух ОС. Нужна функция или алгоритм определения запущенной ОС. Не компилятор и линкер, а программа. Значит рантайм. |
Сообщ.
#14
,
|
|
|
Цитата JoeUser @ Так ясно же написано: Не ясно совершенно Учитывая еще (по соседним темам), что Сергей85 не умеет формулировать вопросы. Более того, я не сомневаюсь, что запускаются разные сборки. |
Сообщ.
#15
,
|
|
|
коллега все это надо делать на этапе компиляции
|
Сообщ.
#16
,
|
|
|
Цитата ter_nk_ @ Это невозможно. Допустим есть два исполняемых файла, все равно надо понять какой запускать. Нет, я имею ввиду реально кросспатформу, чтобы прямо elf и exe и всё в одном флаконе, например, как *.jar/*.jad. Про два файла - это не интересно. Цитата JoeUser @ Программа может запускаться в одной из двух ОС. Нужна функция или алгоритм определения запущенной ОС. Не компилятор и линкер, а программа. Значит рантайм. Тогда не понятен смысл проверки ОС в реалтайме. Это же бессмысленно, с учётом того что со слов ter_nk_ ясно что на одной конкретной ОС будет одна конкретная сборка приложения) |
Сообщ.
#17
,
|
|
|
Цитата VisualProg @ Тогда не понятен смысл проверки ОС в реалтайме Версий операционных систем - море. Каждая обладает рядом уникальных для нее одной свойствами. Часто это не важно, но не всегда. |
Сообщ.
#18
,
|
|
|
Цитата JoeUser @ Версий Нет, ТС дал ясно понять что его интересуют две ОС - Windows и Linux, промежуточные версии каждой из них его не интересуют. |