Todo tu código es portable... salvo la linea del final:
La función como tal si es portable, pero su ejecución esta muy relacionada con el entorno donde se ejecuta. Esta función
NO pausa la ejecución del programa, lo que hace es ejecutar un comando del shell, y usar su valor de retorno. El código, tal y como esta, compilará en cualquier plataforma. Si lo corres en Window, no tendrás ningún inconveniente, ya que ese comando (pause) existe en la consola, y detiene la ejecución del programa con un mensajito.
Si lo corres en linux, lo único que obtienes es un mensaje de error (sh: pause: not found), ya que este comando no existe en el shell de este sistema operativo (lo más parecido es: read -p "Dale a una tecla..." ). Cabe destacar que tu programa NO ABORTA inesperadamente, sólo imprime un mensaje de error. Por ejemplo, en este programita:
#include <stdio.h>
#include <stdlib.h>
int main()
{
system("pause");
printf("Esta linea también se imprime...n");
return 0;
}
...imprime la siguiente salida (ejecutándolo desde una consola linux):
sh: pause: not found
Esta linea también se imprime...
Si realmente necesitas paralizar la ejecución del programa, usa una función como:
#include <stdio.h>
...
getchar();
...
...o lee un caracter con "cin >> ..."