コンパイラの違い

投稿日:2019年04月14日 18時13分00秒

C言語で開発してますとかいうと、今時はVisualC++なんだろうか。まあ何で開発しようと構わないんだけど、このコンパイラ間のソース移動をすると違う部分がひっかかる。

作者の違いといってしまえばそれまでだが、ここは可怪しいだろう!と指摘する部分が異なるのは話としては面白い。
現在はg++(g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4))で開発してるのだけど、g++のエラーは基本的に緩い。結構コンパイルで引っかからない警告も多い。

一方g++ではprintfに渡す引数のチェックが意外に厳密で型が合わないと警告してくれる。何故か現役でまた使い始めたc++builderでは素通りですよ。まあ古いからだろうけど。そのc++builderではchar*とunsigned char*がキツくチェックされる。linuxのvalgrindというメモリリークチェッカとBorlandのcodeguardというメモリチェッカでもチェックの場所が違う。

ということでソースをlinuxとwindowsで往復させていると結構いろんなバグが取れますよ。

[<< atwikiのパスワード流出について]

[sprintf! sprintf! >>]