Бред какой-то, что-то не в ту степь понесло вас. Кроссплатформенность определяет не язык, а сопутствующие инструменты. Выберете кроссплатформенный c++ фреймворк — будет кросплатформенно. Какие ещё define? Мы же не говорим здесь об использовании winapi, например.
з.ы. Qt, к примеру. Да и не только.
Причём тут линукс? Это ограничение 32-битного режима. Ну, лимит не в 2 гига, а 4 для всего адресуемого пространства. В том числе вся система, шаред-либы итд тоже занимают место в этом пространстве. Так что под программу остаётся какая-то часть. В винде вот просто 2048, можно и 3+ гб настроить там, как помнится.