□ C言語で書いたからといって移植し易くなるわけではない

 最近では、あえて言われることでもないですし、勘違いもされてないでしょうが……一応。

 かって、C言語が他の言語よりも移植性がよい、と言われていた理由の一つは、 他の言語(というかBASIC)ならば、同一言語だけれども入出力等の文法組込の命令が処理系(コンパイラ/インタプリタ)間で非互換だったとすると(処理系を改造するのでもないかぎり) ソース中の非互換命令を使った個所をすべて修正する必要があるけれど、C言語ならば文法だけでは入出力さえなく基本的なことしかサポートしない代わりに、各種機能は(ユーザ定義可能な)関数のレベルで提供されるため、移植先環境に互換関数がなければ、互換性のある関数をプログラマが記述することで極力元ソースの修正を最小限にして移植することができる、と、いうことなんです。
(もっとも、実際のCコンパイラは、CPUの性能のためなどで、ライブラリだけでなく文法自体も独自に拡張してるものが多いですが)。
 たとえば、ある BASIC で書かれたソースで
  LOCATE 1,y+10
とかかれた命令と同じことを別の BASIC では
  CURSOR 0,y+9
と書き直さないといけない場合があるとしても、Cならば
  locate(1,y+10);
のように使われる関数があるなら、それを移植先環境用に作るれば/書き換えれば済む、といわいけです。
 なので、移植を前提に、注意深く機種依存要素を極力避けて組み、どうしても依存する要素は極力最小限の手間ですむよう一箇所にまとめるなりして工夫しておけば、プログラマが意識して記述しさえすれば、移植しやすいソースを書くことが出来る、と、いうわけです (それでもプログラマが移植を想定した範囲(OSやCPU,入出力環境等)での、移植性、と、いうだけなんですが)。

 メーカー独自のライブラリ関数をふんだんに使ったプログラムを他のコンパイラ/環境に移植する場合は、そのライブラリ関数と互換性のあるライブラリを入手するか、使った関数の分だけ同じ機能の関数を自分で作るか、同様の機能をもつ非互換のライブラリがあるならそれに合わせてソースを書き換えるか、なんなりの作業が発生するわけです。  なまじ便利な機能が提供されていると、同等のものを一から作るというのはかなり至難なことになるでしょう。
 環境によっては、同じ仕様のものを根本的に用意することが不可能/無意味な場合もあり その場合は、環境にあわせた大掛かりな作り直しをする場合もあります。

 だから、Cで書いたからと言って、環境やコンパイラの非互換要素を気にせずに書かれたソースが移植しやすいわけでは、ないです。