0

私はCが初めてです(Javaから来たので、初めてプログラミングを学んでいません)。「Cプライマープラス」という本を読んでいます。私は、Windows で C プログラムを開発するためのコンパイラや環境の違いを理解するために、あちこち探し回っています。

MinGW と Visual Studio 2010 をインストールしました。両方の環境で hello world のコンパイルをテストしました。MinGW については、Code::Blocks か vim を検討しています。Code::Blocks でのマルチ コンパイラ サポートは便利に思えますが、この機能がどれほど役立つかを理解できるレベルではありません。

私は、Visual Studio のような IDE によって隠された作業をバックグラウンドで行うことに甘やかされるのではなく、本来あるべき方法で C を学習したいと考えています。理解が深まれば、より便利な環境に切り替えてもかまいません。

私が Visual Studio に違和感を覚える理由は、gcc ほど標準をサポートしていないからです。私は、VS が本番環境で広く使用されており、これがまさにその通りであるという議論を読みました。一部の人々は、私が望んでいないところならどこでも C を書き始めるだけだと言います。コマンドプロンプトを体験して、リンクがどのように行われるかなどを確認する人もいます。

これはウィキペディアからのものですが、C のコンパイルに Visual C++ を使用すべきではないと書かれています。http://en.wikipedia.org/wiki/Visual_C%2B%2B#Issues

ですから、ここで明確にしなければならないことがあります。数ブロックかもしれません。

私の理解では、Visual Studio は、Windows プラットフォーム向けに開発している限り適切であり、コーディングを開始したいだけの人にも適しているということです。

より最新の標準を使用して gcc (Linux で使用されている) を使用する場合は、MinGW を使用する必要があります。MinGW は、Windows に移植された最小の gcc ライクな環境であるため、Linux と同様の環境を使用できるため、VS よりもサポートされている標準にメリットがあります。また、これは私のプログラムが Linux でよりうまくコンパイルされるようにするためのものであり、Windows MinGW でプログラムをコンパイルして Linux で実行するためのものではありませんよね?

ここで言う移植性とは、各プラットフォームでソース コードをコンパイルすることであり、ある特定のプラットフォームでプログラムをコンパイルして、実行されたファイルを他のプラットフォームで使用することではありませんね。

4

3 に答える 3

2

Visual C++ は C コンパイラではありませんが、Visual Studio ツールでは C コードのコンパイルが可能です。Visual Studio のコンパイラは、ほとんどすべての Microsoft の C コードをコンパイルするために使用されます (Microsoft の C コードにはたくさんの C コードがあります)。 Windows システムでは、新しいツールのかなりの部分が C である可能性がありますが、多くのことの基礎は依然として C です)。C は C++ ではなく C としてコンパイルする必要があります。これは、C++ にはいくつかの点でわずかに異なるフレーバーがあるためです。C で許可されているものは C++ では許可されていません。

これを行う方法は、something.cpp ではなく、something.c というファイルを呼び出すことです。これは本当に簡単です。

gcc は非常に有能なコンパイラでもあり、それについては疑いの余地がありません。また、Code::Blocks などのツールを使用すると、学習するのに適した方法になります。

実際には、Visual Studio は間違いなくよりスムーズで洗練された環境であり、必要に応じて make などのコマンド ライン ツールを使用してビルドすることもできます。コンパイラは IDE の一部ではなく、適切に統合された IDE です。コンピューター言語の学習には、障害ができるだけ少なくあるべきです。自分の人生を困難にすることは何の助けにもなりません。

私は個人的に Linux で (x)emacs と gcc を使用していますが、初めて C でプログラミングしたときは、適切な標準さえありませんでした。コンピューターには通常 8 ビットまたは 16 ビットのプロセッサが搭載されていました。1985 年の私たちの学校のコンピューターには2MB の RAM とそれぞれ 64MB の 3 つのディスク (512 バイトの 131000 何かブロック)。そのマシンには私の学校に 8 台の端末があり、別の学校にはさらに 8 台の端末があり、実際のコンピューターが置かれていた本校には 2 つの部屋があり、それぞれに 16 台の端末があったと思います。30人でマシンをシェアすることもありました!

于 2012-12-29T20:08:53.543 に答える
1

最も快適に感じるプラットフォームを選択し、クロスプラットフォームの移植性などの複雑さについて心配して待つ必要があります.Javaから来ると、最初はポインターなどで手がいっぱいになるので、代わりにそれに集中してください.環境の。

以前に Eclipse 環境で Java を作成したことがある場合は、C/C++ 用の CDT プラグインが適しているかもしれません。とりわけ、gcc ツール チェーンをサポートします。

よろしく

于 2012-12-29T20:19:40.183 に答える
0

Windows 用にコンパイルする場合は、CodeBlocks、Dev-CPP、または Eclipse を試してみてください。これらはすべて GCC を使用していると思います。基本的に、いくつかの機能をテストできるように、新しいソリューションの作成/新しいプロジェクトのインクルード/新しいファイルの作成を強制しないものが必要です。単一の .c ファイルをコンパイルして実行し、その形式で再生したい。

Linux 用にコンパイルする場合は、Geany や Eclipse を試すか、単に gcc を使用してください。作業中にメイクファイルを取得することもできます。

それとは別に、C コードを作成するか、これらのパブリック ネイティブ Java 呼び出しがどこで終了するかを調べます。しかし、数学パッケージを見ないでください。がっかりするでしょう。

編集:移植性に気づきました。はい、すべてのターゲットで再コンパイルするか、クロスコンパイラを使用する必要があります。

しかし、クロスコンパイルだけでは十分ではありません。異なるプラットフォーム用のコードも作成する必要があります。たとえば、Windows では Win API 呼び出し CreateThreadA() を使用しますが、Linux ビルドではおそらく pthread_create() を使用します。使い方に慣れる必要があります

//some code
#ifdef __platform_windows
   //windows code here
#endif
#ifdef __platform_linux
   //linux code here
#endif
//crossplatform code
于 2012-12-29T22:55:21.440 に答える