The problem, for example, is that although languages determine the sizes of variables of different types and the ranges of values that they can accept, they can behave differently on different platforms. For example, the int type when compiling under DOS is 16 bits wide, 32 bits when compiled under win32, and 64 bits when compiled under linux x64.
Then problems can cause different behavior of standard functions. Not to mention that if you need to work with third-party libraries. It may easily turn out that on any particular platform there is no vital function for software operation ...
As noted by @avp , it is very often the problem of localization of programs, and this so that the program works everywhere. This is due to the fact that in different systems their approaches to solving this issue. There are, of course, standard language tools in c ++ for localization, but you cannot call them sufficient ...