Ресурсы для кроссплатформенной разработки на C / C ++ - PullRequest
6 голосов
/ 09 июня 2009

Какие ресурсы существуют для помощи в написании кода на C / C ++, который работает на разных платформах и компиляторах? Например, я регулярно задаю себе вопросы типа:

  • Какие макросы препроцессора автоматически определяются в различных компиляторах и средах? (например, __GCC__, WIN32, __WIN32__, __CYGWIN__)
  • Какие версии компиляторов и стандартных библиотек поддерживают относительно новые «стандартные» функции (например, длинные двойные тригонометрические функции C99 sinl (), cosl (), ...)
  • Какие функции доступны на разных платформах для выполнения типовых задач, когда кажется, что не существует ни одной переносимой функции? (например, получение текущего времени с точностью до секунды)

Я часто пишу код, который должен компилироваться в Linux / gcc, cygwin, mingw32 и Visual Studio, и мне часто приходится сравнивать заметки из нескольких источников (справочные страницы Linux, MSDN, документы компилятора), чтобы получить необходимую мне информацию. Это должно быть проблемой, с которой постоянно сталкиваются разработчики - есть ли какие-либо ресурсы, которые компилируют эту информацию в легко усваиваемую ссылку?

(По этому вопросу меня не особо интересуют кроссплатформенные библиотеки, такие как wxWidgets или boost. Меня больше интересуют ресурсы или методы, которые помогут кому-нибудь написать свою собственную кроссплатформенную библиотеку или программу.)

РЕДАКТИРОВАТЬ: Это пример типа страницы, которую я ищу: http://predef.sourceforge.net/precomp.html. Хороший обзор различных компиляторов / сред и макросов препроцессора, которые можно использовать для их идентификации. Было бы здорово найти аналогичный ресурс, который сравнивал бы почти эквивалентные функции на разных платформах (например, gmtime_r () или ftime () в Linux против _gmtime_s () или _ftime () в Windows), когда не существует общей функции.

Ответы [ 4 ]

3 голосов
/ 09 июня 2009

Вот один ресурс, который может быть вам полезен Предопределенные макросы компилятора C / C ++

1 голос
/ 09 июня 2009

Это действительно зависит от вашего конкретного проекта, но я бы попробовал

  • придерживайтесь ISO-совместимого кода и POSIX, если это возможно;
  • используйте -Wall и устраните все предупреждения;
  • проверьте autoconf и autotoolset, могут ли они помочь.
1 голос
/ 09 июня 2009

Основной способ написания кросс-платформенного кода - это написание кода, который не зависит от конкретной платформы. Например, почти все оригинальные утилиты UNIX могут быть написаны без ссылки на конкретную платформу. Написание кода, зависящего от конкретных макросов, с использованием условной компиляции - не лучшая практика.

0 голосов
/ 24 июня 2009
...