На Visual C++ я использую /W4
и /WX
(предупреждения обработки как ошибки).
VC также имеет /Wall
, но это является несовместимым со стандартными заголовками.
я принимаю решение рассматривать предупреждения как ошибки, потому что это вынуждает меня зафиксировать их. Я фиксирую все предупреждения, даже если это означает добавлять #pragma
для игнорирования предупреждения - тот путь, я заявляю явно, что я знаю о предупреждении (таким образом, другие разработчики не пошлют мне по электронной почте об этом).
Я не знаю ни одного кроссплатформенного способа.
В Windows есть команда start
, которая запускает соответствующее приложение по умолчанию. (Например, start foo.doc
запускает редактор документов Word по умолчанию, запускает http://StackOverflow.Com/
веб-браузер по умолчанию и запускает mailto: mail @ example. com
почтовое приложение по умолчанию.)
В OS X есть команда open
, которая делает то же самое.
Linux - это просто ядро операционной системы. Ядра ОС ничего не знают о «типах файлов», «MIME-типах», «связанных приложениях» и т. Д. Следовательно, такая вещь просто не может существовать для Linux.
Группа Freedesktop имеет спецификацию для команды xdg-open
, которая работает на всех Freedesktop -совместимые графические рабочие столы (будь то Linux, FreeBSD, NetBSD, OpenBSD, DragonflyBSD, OpenSolaris или другие). Однако, очевидно, не гарантируется работа в системах, отличных от Freedesktop, и определенно не гарантируется работа в неграфических системах.
Во всех трех случаях,
Поскольку вы заметили, что если вы используете Qt, стоит упомянуть класс QDesktopServices и особенно метод openUrl (QUrl) . Он делает в значительной степени то, что вы описали, на всех платформах, поддерживаемых Qt.
В C есть системный вызов, например:
system("main.cpp");
Это откроет файл с помощью редактора по умолчанию (Visual Studio в моем случае). Я не уверен насчет Linux и Mac, вам может понадобиться написать там «open main.cpp» (об этом можно позаботиться с помощью конструкций #ifdef).