Есть много вопросов, о которых вам нужно знать, к сожалению.Самое важное, как отмечали другие, заключается в том, что вы используете только стандартный C ++ и любые библиотеки, переносимые на все платформы, на которые вы ориентируетесь.Но есть и много других вещей, которые могут вас укусить, например, разные окончания строк (Windows использует \ r \ n, варианты Unix обычно используют \ n), разные размеры типов данных и т. Д. В целом, когда вы пытаетесь сохранить переносимость вещейвам также необходимо знать о таких вещах, как порядковый номер байтов, упорядочение байтов, способ работы различных файловых систем и т. д.
По сути, самое важное - это знать все системы, на которые вы ориентируетесь. Не пишите это на одной системе, а потом ожидайте, что сможете безболезненно скомпилировать ее на другой.Вместо этого скомпилируйте его на всех соответствующих системах с первого дня и убедитесь, что он продолжает работать на всех них, все время.Я рекомендую взглянуть на кроссплатформенную систему сборки, такую как CMake (http://www.cmake.org) - это избавит вас от боли в моем опыте. Вы не хотите, чтобы на каждом этапе вам приходилось хранить файлы сборки для нескольких платформвремя, если вы можете помочь ему.