重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

現在Microsoft Visual Sutudio C++6.0を使用しているものです。
今、Microsoft Visual Sutudio C++2008の無料版に乗り換えようと考えているのですが、どのように違うのでしょうか。
自分で調べたところ2008は64ビットで6.0は32ビットで処理していると書いてあったのですが、その違いが分かりません。

具体的には
1.6.0で作ったプログラムは2008でも同様に動くのでしょうか?
2.6.0と2008では大きく変わった点はどこでしょか?
の2点が知りたいです。

調べたところsprintfを使用すると警告あるいはエラーがおきるとかあったのですが、それは本当でしょうか?
ちなみに私はC++ではなくC言語を使っています。よろしくお願いします。

A 回答 (6件)

>2008は64ビットで6.0は32ビットで処理している


VC6の時代はx64がそもそもなかったので、
64ビット版ネイティブのコンパイルが「怪しかった」のです。
64ビット版のコンパイルは2003.netから正式に可能になってます。

>1.6.0で作ったプログラムは2008でも同様に動くのでしょうか?
基本的にプロジェクトファイルは、
新しいVCで開くと、
その都度コンバートしてくれるので、
そんなに心配はないでしょう。

あとは、コンパイル時にリンクされる、
ランタイムライブラリが異なったりします。
VC6ではMSVCRT.dll
2008ではMSVCR9.dll
# 2008に限らず、2003, 2005でも同様ですが。
# 古い環境に持っていくと、動作しなくなる
# 可能性も考えられます。(DLLを同封しておけば大丈夫ですが)

> 2.6.0と2008では大きく変わった点はどこでしょか?
内部的に違うものとかは、
C++の構文解釈や最適化方法も異なっています。
例えば有名なものだとVC6だとクラス内の、
const変数が定義できなかったりとかでしょうか。
# 他の方もおっしゃってますが、
# 互換性のある別製品くらいに思ったほうが良いかも知れない

> そもそもリソースエディタが何なのか知らないのです(汗)
モジュールなどに「バージョン番号」をつけたり、
「ダイアログフォーム」をリソースとして用意したり、
「ストリングテープル」や「アクセラレータ」、
「アイコン」もこれに含まれますが、
こういった物を総合して「リソース」と呼びます。

通常これらはスクリプトで記述されるのですが、
これをGUIで視覚的に作ることができるのがリソースエディタです。
    • good
    • 0

ちょっと意味が分からなかったので補足です。



>2008は64ビットで6.0は32ビットで処理している
コンパイラの動作はすべて、そのプロジェクトと、
ユーザ毎の設定によって行われます。
# もちろん64ビット版のコンパイルには、
# 対応するCPUが必須ですが。

2008などは別に64ビットで動作しているわけではありません。
そのように設定をすれば、それが可能というだけです
    • good
    • 0

>試しにVC2008を入れてみて今までのファイルが使用できるか試してみました。

64ビットに変更したのが関係あるのか警告それにエラーも出てきてしまいました。

VC6.0でMFCやリソースエディタに依存するファイルをincludeしている可能背があります。
MFC使っていなくても取り込んでくれたのでIDEがリソースの為に使用していたファイルかも知れません。
afxres.hが無くてビルドできないかと。

# VS2005ExpressEitionでハマったので、製品版が発売になった当日にアップグレード版買いました。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

afxres.hですね。確認してみます。
include等については今まで適当に「ファイルを追加」でなぜか動くからと深く知ろうとしませんでした(汗)
やはりそういう部分の知識も大事ですよね。勉強していきたいです。

お礼日時:2009/02/10 17:53

> 64ビットに変更したのが関係あるのか警告それにエラーも出てきてしまいました。



これは、「VC6でたまたま動いていただけ(潜在バグだった)」、
「処理系依存で定義が変わった」、「処理系が親切に/正しくなった」など、
いろいろな理由で、いろいろなものが起きます。
エラー内容も(VC6とは異なりますが)それなりに親切に出ると思いますので、個別に確認ください。

> あと、VC2008はワークスペースではなくてプロジェクトというものを作らなくてはいけないようですね。

 dsw -> sln (ソリューション)
 dsp -> vcproj
に名前が変わってます。どちらも単にテキストですが、後者はXMLです。

> 初歩知識だったら申し訳無いのですが、これはどういう意味でしょうか?

Win32 APIによるGUIアプリを作っているとリソースファイルを作ることがありますが、
このためのエディタが付いていません。まぁOpenCVの描画などには直接影響ないです。

#2の方が書かれているのは、(この文脈では)コンパイラではなく、
リソースエディタですね。(Expressにはこれが無いので別途用意するわけです)
    • good
    • 0
この回答へのお礼

親切にありがとうございます。

なるほど、「VC6でたまたま動いていただけ(潜在バグだった)」が一番近い気がします。
これを機会にもう少しCについて勉強していきたいと思います。

お礼日時:2009/02/10 17:39

>リソースエディタなどもないので、


>もしGUIを作られているなら影響があります。
フリーで使いやすいものがあります。
    • good
    • 0
この回答へのお礼

そうなのですか?フリーはボーランドぐらいしか知らなくて・・・(そもそもリソースエディタが何なのか知らないのです(汗))。
良かったら教えてください。

お礼日時:2009/02/09 23:36

> 1.6.0で作ったプログラムは2008でも同様に動くのでしょうか?



既存がwell formedなCであれば、おそらくその範囲では動くのではないかと思います。
そうでなければ、潜在バグが顕現して悩まされたりするかもしれません。

> 2.6.0と2008では大きく変わった点はどこでしょか?

違いを上げればおそらくきりがないくらい違います。
主な違いは、操作性でしょうか。まぁ、別物です。

後は、C++の実装が違うとかはCだと影響薄かもしれませんが、
ExpressはMFC以外にもリソースエディタなどもないので、
もしGUIを作られているなら影響があります。

> 調べたところsprintfを使用すると警告あるいはエラーがおきるとかあったのですが、それは本当でしょうか?

本当です。Microsoftはよりセキュアな関数の仕様を推奨しているため、
そちらを使え…とおせっかいを言います。(無視する設定は可能です)

VC2008をVC6の入っている環境に入れるサイドバイサイドはできるはずですので、
(逆は不可能。また、VC2008の後にVC6のSPを当てるみたいなこともNG)
百聞は一見にしかず。とりあえず、VC2008Expressを使ってみたらどうでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

試しにVC2008を入れてみて今までのファイルが使用できるか試してみました。64ビットに変更したのが関係あるのか警告それにエラーも出てきてしまいました。
あと、VC2008はワークスペースではなくてプロジェクトというものを作らなくてはいけないようですね。頑張って勉強していきたいと思います。

>ExpressはMFC以外にもリソースエディタなどもないので、もしGUIを作られているなら影響があります。
初歩知識だったら申し訳無いのですが、これはどういう意味でしょうか?今までが動けばいいというスタンスで独学でやってきたため、全く用語が分かりません。私は描画にopenGLを使用していますが、それに大いに関係のあることなのでしょうか?

お礼日時:2009/02/09 23:33

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