На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела *nix / gcc / Eclipse / Qt / wxWidgets / GTK+
  • При создании темы ОБЯЗАТЕЛЬНО указывайте версию тулкита / библиотеки / компилятора.
  • Перед тем как задать вопрос, сформулируйте его правильно, чтобы вас могли понять.
  • Нарушение Правил может повлечь наказание со стороны модераторов.


Полезные ссылки:
user posted image Boost по-русски
user posted image Qt по-русски
Модераторы: archimed7592
  
> Отличить Windows от Linux. , Qt Creator v.3.5.x.
    Программа может запускаться в одной из двух ОС. Нужна функция или алгоритм определения запущенной ОС.
      Q_OS_WIN
      Q_OS_LINUX
        Цитата shm @
        Q_OS_WIN
        Q_OS_LINUX

        Это "подсказки" компилятору какие куски кода использовать под целевую систему - это не определение. Определять можно так:

        1) попробовать запустить команду VER, если успешно - значит получишь версию венды
        2) попробовать запустить команду uname -a, если успешно - значит получишь версию *nix
        3) а можно забыть про первые два пункта и заюзать QSysInfo
          Цитата JoeUser @
          это не определение

          Шо значит не определение?
          ExpandedWrap disabled
            #ifdef Q_OS_WIN
            std::cout << "Windows";
            #endif
            ну, наверное, имелось ввиду чтоб прям версия системы определялась. но в общем это нафиг нужно. как правило:
            ExpandedWrap disabled
              #ifdef _WIN32
              Цитата shm @
              Шо значит не определение?

              Это указание на целевую платформу в compile-time. Челу же нужно определение в рантайме. Вот пример. Допустим таки удастя запустить линух прогу под вендой. Тогда такая линух-программа будет бодрячком рапортовать "я работаю под линухом", а это неверно. В рантайме с помощью QSysInfo - должно быть все ровно.
                Цитата _lcf_ @
                как правило:

                "_WIN32" "_WIN64"

                в MinGW и g++ есть ещё такая штука как "__linux__"

                Добавлено
                Цитата JoeUser @
                указание на целевую платформу в compile-time

                Вот такого я не умею :o
                Это получается, один и тот же собранный файл, например *.exe будет исполняемым (и соответственно полноценно работать) и на Win и на Linux одновременно?
                  Цитата VisualProg @
                  Это получается, один и тот же собранный файл, например *.exe будет исполняемым (и соответственно полноценно работать) и на Win и на Linux одновременно?


                  Это невозможно. Допустим есть два исполняемых файла, все равно надо понять какой запускать.
                    Цитата JoeUser @
                    Челу же нужно определение в рантайме.

                    С чего ты взял?
                      хм, а что, в процессе выполнения система может изменится? :)
                        JoeUser рассматривает какой-то высосаный из пальца случай, когда прога запускается под эмулятором окружения ОС. К слову, я не уверен, что в этом случае
                        Цитата JoeUser @
                        QSysInfo - должно быть все ровно.
                          Цитата JoeUser @
                          Это указание на целевую платформу в compile-time. Челу же нужно определение в рантайме.

                          Во-первых, это нигде не сказано. Во-вторых, что мешает написать так?
                          ExpandedWrap disabled
                            std::string os_name()
                            {
                            #ifdef Q_OS_WIN
                                return "Windows";
                            #else
                                return "Linux";
                            #endif
                            }
                            Цитата shm @
                            С чего ты взял?

                            Так ясно же написано:

                            Программа может запускаться в одной из двух ОС. Нужна функция или алгоритм определения запущенной ОС.
                            Не компилятор и линкер, а программа. Значит рантайм.
                              Цитата JoeUser @
                              Так ясно же написано:

                              Не ясно совершенно :no: Учитывая еще (по соседним темам), что Сергей85 не умеет формулировать вопросы. Более того, я не сомневаюсь, что запускаются разные сборки.
                                коллега все это надо делать на этапе компиляции :D
                                  Цитата ter_nk_ @
                                  Это невозможно. Допустим есть два исполняемых файла, все равно надо понять какой запускать.

                                  Нет, я имею ввиду реально кросспатформу, чтобы прямо elf и exe и всё в одном флаконе, например, как *.jar/*.jad. Про два файла - это не интересно.
                                  Цитата JoeUser @
                                  Программа может запускаться в одной из двух ОС. Нужна функция или алгоритм определения запущенной ОС.
                                  Не компилятор и линкер, а программа. Значит рантайм.


                                  Тогда не понятен смысл проверки ОС в реалтайме. Это же бессмысленно, с учётом того что со слов ter_nk_ ясно что на одной конкретной ОС будет одна конкретная сборка приложения)
                                  Сообщение отредактировано: VisualProg -
                                    Цитата VisualProg @
                                    Тогда не понятен смысл проверки ОС в реалтайме

                                    Версий операционных систем - море. Каждая обладает рядом уникальных для нее одной свойствами. Часто это не важно, но не всегда.
                                      Цитата JoeUser @
                                      Версий

                                      Нет, ТС дал ясно понять что его интересуют две ОС - Windows и Linux, промежуточные версии каждой из них его не интересуют.
                                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                      0 пользователей:


                                      Рейтинг@Mail.ru
                                      [ Script execution time: 0,0441 ]   [ 17 queries used ]   [ Generated: 25.04.24, 04:40 GMT ]