Ne der Dreher ist mir wurscht. ^^ Was ist Portabel? Und wenn, warum halbwegs ^^
Ach auch wayne xD, bleiben wir lieber beim topic ^^
Portabel bedeutet einfach gesagt, daß ein Programm nicht nur unter Windows, sondern unverändert auch unter Linux läuft. Also plattformunabhängig ist.
Im Optimalfall schreibst Du Dein C-Programm und kannst es ohne irgendwelche Anpassungen unter Windows und Linux jeweils kompilieren und ausführen und es verhält sich auf beiden Plattformen gleich.
Der Haken an der Sache ist, daß man sich auf den kleinsten gemeinsamen Nenner beschränken muß. Also z.B. die Standard-C-Bibliothek. Benutzt Du statt atoi() nämlich StrToIn(), dann wird das Programm nur unter Windows funktionieren. Genauso steht es mit dem hier oft geposteten system("Pause").
Das Problem beschränkt sich nicht nur auf Windows <-> Linux. Weitere Quellen für Inkompatibilitäten sind 8 <-> 16 <-> 32 Bit <-> 64 Bit, Little Endian <-> Big Endian usw.
Hier steht noch bisschen was dazu:
http://de.wikipedia.org/wiki/Plattformunabh%C3%A4ngigkeit
Für Programme, die nur Ein/Ausgabe machen, oder speziell für hardwarenahe Programmierung auf Embedded Systems ist C immer noch die Sprache der Wahl.
Soll das Programm aber mehr als Standard-I/O machen, empfehle ich Java. Das bringt eine unvergleichlich größere Bibliothek mit und die Programme laufen unverändert unter Windows und Linux.
Soll das Programm sowieso nur unter Windows laufen, dann ist C# und .NET die richtige Sprache.
Egal ob Java oder .NET. Schon einfach Dinge wie ein einfacher TCP-Server ist in C nicht ohne extra Libs möglich. In Java und .NET ist das eine Sache von ein paar Minuten.