はっきりいってGCCのことが全く分かりません。
質問は次の3つです。

1.GCCはWindows上で動くのですか。
2.GCCはどのようにして入手できるのでしょうか。
3.GCCを使う意義はなんですか。

ご回答よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

GCCって、GNU C++ のGCCコマンドということでよろしいのでしょうか?



であれば、

1.もちろん、動きます。
2.GCCはGCCではなく、「CYGWIN」というUNIX(のBASH系シェル)を仮想した
  コマンドラインツールのセットとしてはいっています。
  GCCのみならず、Perl、その他のものが結構一度に入手できます。

Cygwinはここから入手してください。
http://sources.redhat.com/cygwin/
なお、ダウンロードする際に、いろいろなディレクトリがあって、迷いますが、
最新バーションのもののうち、「latest/」というディレクトリの中を全て
入手します。(かなり大きなメガ数となります。)

3.GCCを使う意義はなんですか。
 ないです。Windows上で、Windowsのためのプログラムを作る場合、
 GCCを使うのは「愚の骨頂」です。ファイルサイズは大きくなるし、
 スピードも遅くなりますし、GCCには、配列に配列を代入すると、
 配列の中身がちゃんとコピーされてしまうなど、普通のC++の文法では
 許されないことが許されてしまっているため、汎用性においても疑問
 視せざるを得ないです。

 GCCを使うのは、あくまでもUNIX系か、それに近い環境で動かすための
 プログラムを組む場合にのみ有効です。
    • good
    • 0
この回答へのお礼

詳しいお話ありがとうございました。
接続時間に余裕のあるときに試しにCygwinダウンロードしてみたいと思います。

お礼日時:2001/05/23 14:01

1.動きます


2.参考URLを参照してみてください。
3.gccで記述する限り、プラットフォーム(OS)依存を極力減らす事が出来ます。

ただし、他の方のアドバイスにも有る様にWindows上で利用するメリットは低いかもしれません。特にWindows専用アプリケーションを記述する場合。

参考URL:http://www.ab.wakwak.com/~tino/windows/
    • good
    • 0
この回答へのお礼

まあ、今のところOS依存にこだわるほどのことやっていないので、
必要性は?ですね。
どうもご回答ありがとうございました。

お礼日時:2001/05/23 14:10

3.についてだけ。



No.1の解答者の方は、過去に痛い目にあったことがあるのでしょうかね。

確かに、gcc は固有の拡張をしているので、ANSI C としてみた場合には
互換性に疑問があります。

そのかわり、対応しているプラットフォーム(OSと思ってもらって良いです)が
多いですから、gcc を使っている限り、互換性があると言えます。

また、gcc の最適化は(ある意味、無茶といえるほど)こったことをやって
くれることがあります。なので、一概に「遅い」とは言えません。


ものには得意分野がありますから、Windowsだけで動けば良くて、Windows
特有のウィンドウを持つプログラムを作るケースにおいては、Windows の
コンパイラ(VCやBC)に軍配が上がるでしょうが、unix なども視野の中に
いれるのであれば、知っておいて損はないです。

ただ、gcc固有の拡張機能は、使わない方が無難かと思います。
    • good
    • 0
この回答へのお礼

仰るとおり、まずはCからはじめます。
一応、BCCがあるのでC++をマスターしたいと思います。
丁寧なご回答ありがとうございました。

お礼日時:2001/05/23 14:08

3について


あと、マイコンの開発なんかは最近はGCCが圧倒的に多いですね
なんてったって、ただだし・・・・
    • good
    • 0
この回答へのお礼

ただ……。
これ以外に求めるものはありません。
別に僕はマイコンの開発などといった分野に手を出すような玄人じゃないので。
ひまなときに手を出してみます。

お礼日時:2001/05/23 14:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qネイティブ ハンドルって...............

ネイティブ ハンドルってなんでしょうか?
ウィンドウ ハンドルを調べていたら出てきたのですが
調べてもわかりません
すいませんがどのようなものなのかお教え願えませんか?
よろしくお願い致します

Aベストアンサー

カテゴリ違いでは?
.NETですよね。

.NETでは、従来のウィンドウハンドルは基本的に使いません。
Windowsプラットフォームにネイティブなものだからネイティブハンドルと呼んでいるのでしょう。

QVisual C++ Express Editionで IntelliSenceが全く動かない…

通常コードを途中まで打てば候補が自動表示されるはずですよね?

例えば pri と入れれば printf という候補が

if と入れれば
if ( ){

}

というような形で出てくると思っていたのですが…

ツール > オプション > テキストエディタ > C/C++ > 全般の
入力候補 > 自動メンバ表示やパラメータヒント
にチェックがついているのも確認しましたが、それでも解決しません
alt + → を押せばなんとか出てくるのですが、自動でなくては困ります。

何か解決法がございましたら教えてください
よろしくお願いします。

Aベストアンサー

No.2です。

ちょっと補足訂正しておきます。

http://msdn.microsoft.com/ja-jp/library/aa991993.aspx
によると、
「現在のところ、Visual C++ および HTML では、IntelliSense コード スニペットは
サポートされていません。」
と書かれていますので、おそらくC++用の定義パターンがないだけでなく、
新しい定義を自分で作ることもできないのだと思います。

前述の「Visual Studio 2005 IDE Enhancements」をインストールしてみる
くらいしか手がなさそうですが、これもexpress editionはサポートされていません。

Qbash.exeを直接起動するとgccが実行できま

C言語を始めてみようと思ってcygwinをインストールしました。初心者です。
Cygwin.batから起動するとキチンとgccコマンドが使えるのに、bash.exeから直接起動すると、なぜかcommand not foundとなってしまいます。emacsからコンパイルできるようにしたいと思っているので、不都合で困っています。どうすればよいのでしょうか。

Aベストアンサー

パス通ってます?

printenvとbashでやったらどうなりますか?

Qプロパティー等の機能(詳細)、どのようにして入手していますか?

C++ Builderを長年使用しています。最近部署が替わり、そこでは前任者がBuilderをかなり使いこなしていた様です。今までの部署では普通の書店に売っているBuilderのバイブル等の本の内容で何とか成ったのですが、今度の部署ではそれらの本に載っていないプロパティー等も使用しています。前任者がいないのでどのように入手したか分かりません。皆さんはプロパティー等の機能(詳細)をどのように入手しておられますか? 若しくは良い解説書等ありましたらお教え下さい。宜しくお願い致します。

Aベストアンサー

質問の趣旨が分かりにくいです。

お尋ねのプロパティとは、C++Builder付属のライブラリであるVCLのコンポーネントがもつプロパティのことですか?
それとも前任者が作成した、または何処からか入手して導入したライブラリのそれでしょうか?

前者ならC++Bulderのヘルプないし付属の開発者ガイドを見れば詳細・使用法は分かります。

後者ならそのライブラリのドキュメントを探し出さない限り分からないでしょう。

Qなぜgccはstdio.hをインクルードしなくてもprintfが実行できるのか

なぜgccはstdio.hをインクルードしなくてもprintfが実行できるのでしょうか。

暗黙にインクルードされるヘッダと
されないヘッダファイルの差分等あれば教えていただきたく。。

// main.c
int main(){
printf("SWSW\n") ;
return 0 ;
}
% gcc main.c
% ./a.out
SWSW

Aベストアンサー

ごくおおざっぱに言えば、インクルードファイルの中には、

・グローバル変数
・typedef による型の定義
・sturcut や union や enum などユーザー定義の型(の定義)
・#define によるマクロ
・関数プロトタイプ
があります(その他のものもあります)

この中で、関数プロトタイプをのぞけば必須です。
ですから、NULL や EOF を使うには、(別に定義するのでなければ) stdio.h が必要です(だったかな?)

assert の実体は(関数ではなくて) #define によるマクロだった気がします(未確認・だとしたらインクルードは必須ですね)

さて、printf() の件ですが、これは、
printf("SWSW\n");
だったから(2番目以降の引数がないから)たまたま実行可能だったという可能性があります。
printf() は、可変引数(引数の数が決まっていない)関数なので、プロトタイプがないと、うまく処理できないコンパイラが多いです。
その場合でも、最初の引数の型決まっているので、引数がひとつだと、たまたま正常に実行可能です。
printf("%d, %f, %s", 1, 0.1, "STR");
なんかだとうまく処理できますでしょうか?
(これも未確認)

あと、関数の返値の型が int でないものは、プロトタイプがないと変な値が帰ってきます。
(ちなみに、printf() の返値は int です。あまり使われませんが)

ごくおおざっぱに言えば、インクルードファイルの中には、

・グローバル変数
・typedef による型の定義
・sturcut や union や enum などユーザー定義の型(の定義)
・#define によるマクロ
・関数プロトタイプ
があります(その他のものもあります)

この中で、関数プロトタイプをのぞけば必須です。
ですから、NULL や EOF を使うには、(別に定義するのでなければ) stdio.h が必要です(だったかな?)

assert の実体は(関数ではなくて) #define によるマクロだった気がします(未確認・だ...続きを読む


人気Q&Aランキング

おすすめ情報