プログラミング初心者です。これからC++をやろうと思っています。

そこで、いろいろ調べたところ、WindowsでやるにはVisual C++を使うのが良さそうだという結論に至りました。というか、それ以外にコンパイルの仕方がわかりません。ここで不安なのが、Visual C++を使用して描いたプログラムは、MacやLinuxでも動くのでしょうか?

C++の初心者用の本は一冊買ったのですが、Visual C++についてはほんの2ページくらいしか書いていなく、ウェブ上で見たVisual C++のサイトでは、本に書いてあるものと若干プログラムの書き方(文法?)が違っていました。ということは普通のC++ではないのかな?と感じ、また、Windowsでしか動かないのでは、と思ったので質問させていただきました。

そうなら、もし他にVisual C++のようなソフトがあれば教えていただきたいです。

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

A 回答 (3件)

C++の標準仕様の範囲で書かれたコードはLinuxやMacOSでもコンパイル可能です。

ただし少しでもそれを外れると互換性が無くなります。
・VC++には、マイクロソフト独自のライブラリが多数ありますのでそれを使ったらNGです。
・特にWindowsAPIやDirexctXを使ったらダメだと思って間違いないです。
・VC++だけだとGUIはWindowsAPI無しには組めませんのでそれもNGです。
・VC++にはC++に似たC++/CLIが搭載されていますがWindows.netで動く全く別物です。

ではGUIで対応OSを増やすにはどうするかと言うと、マルチプラットフォームなGUIツールキットを使います。
http://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A3% …

今注目なGUIツールキットは、最近LGPL化したQtでしょうか。
http://ja.wikipedia.org/wiki/Qt
http://www.sra.co.jp/qt/
GoogleEarth等でも使われていますよ。
    • good
    • 0
この回答へのお礼

丁寧な回答ありがとうございます。
しかし、自分には理解不能な単語がちらほら出ているので、載せてくれたウィキペディアのページも見つつ、ゆっくり理解していこうかと思います。

お勧めのツールも、ありがとうございました。

お礼日時:2009/05/27 18:24

Visual C++で作ったWindows向けのプログラムを、LinuxやMacで動かすことがことができるかどうかということであれば、一応「できます」。



具体的には、WineやMonoをLinuxやMacにインストールし、Windows用のプログラムを動作させるための環境を作ります。Macの場合、VMware Fusionのユニティ表示を使っても、それっぽいことができます。

もちろん、普通にVMwareやQEMUなどで動かすことは可能ですが、これは期待している回答ではないですよね。
    • good
    • 0

OSが違えば、まずどのようなプログラムも動きません。


ソース互換があるかどうか、ということになります。

Visual C++を使うとWindows以外では動かない、という
ことではなくて、Windows独自のライブラリを使うと他の
OSとはソース互換も無くなる、ということになります。

ただし、LinuxもWindowsプログラムを動作させる環境を
作ったりしていますので、この範囲で動くプログラムなら
実行形式でも互換があると言えます。

また、同じWindowsでもXPでは動くけどVistaでは動かない
ものもあります。

なかなか一言では言えない世界ではあります。
    • good
    • 0
この回答へのお礼

一言では言えない世界・・・その通りですね。
どうもコンピュータに対する理解がまだまだ足りないみたいです。

プログラミングをする前からつまずいちゃうのも何なので、とりあえずVisual C++を使ってみることにします。

お礼日時:2009/05/27 18:22

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

このQ&Aを見た人が検索しているワード

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

QC++ の typedef の 使い方の質問

C++のtypedefの使い方の質問ですが、typedefは、別名の定義として、知られていますが。
以下のソースの意味がよく読み取れないです。windows プログラミングとC++
が分かるかたがいれば、以下のソースの意味を教えていただきたいです。

よろしくお願いします。
typedef BOOL (WINAPI *AddAccessAllowedAceFn)(
PACL pAcl,
DWORD dwAceRevision,
DWORD AceFlags,
DWORD AccessMask,
PSID pSid
);

Aベストアンサー

関数ポインタの別名定義です。
「関数ポインタ typedef」をキーワードにWeb検索してみてください。
丁寧に解説されているサイトが見つかるでしょう。

QVisual C++ 6.0で作成したプログラムをVisual C++

Visual C++ 6.0で作成したプログラムをVisual C++ 2008で実行することはできるのでしょうか?

ビルドしてみるのですが、afxwin.hがないと表示されてしまいます。
自分でも検索してみたのですが、ダウンロードできる状況なのかも良く分かりませんでした。

2週間後にプレゼンがあるのですが、手持ちのパソコンにはVisual C++2008しかないため、6.0をインストール、と考えたのですがそれもできないようなので・・・

もし、実行できるのであればその方法をお手数ですが分かりやすく教えてくださるとうれしいです。

Aベストアンサー

ひょっとして Visual C++ Express Edition を使っているのでしょうか。

afxwin.h は MFC のヘッダーで、MFC は Visual C++ Express Edition では利用できません。
Visual Studio の Standard Edition 以上を購入するか、Visual C++ 6.0のプログラムをもとに .NET で作り直すかのどちらかですが、……前者は結構な出費となりますし、後者は 2 週間ではかなり難しいと思います。

QC++.NET の String型の使い方

初めて質問いたします。
C++ .NET 2005 Express Beta版を入手し、Windows Formsのプログラミングを勉強してます。

TextBoxのTextに値を変数で指定したいのですがどうすれば良いのかわかりません。

  textBox1->Text = "Test";
とダイレクトに値を指定すればできるのですが、

  #include <string>
  using namespace std;
   (省略)
  string str = "Test";
  textBox1->Text = str;
は、エラーになってしまいます。

C++標準のstringクラスではなく、.NETはStringクラスがあるようですが、これの使い方がMSDN等で調べているのですが分かりません。
分かりやすいURLなどありましたら教えていただけませんか。

Aベストアンサー

textBox1->Text = new String(str.c_str());
でいけるんじゃないかなあ。
試してないのでなんですが、
C++のstringクラスからは、c_str()で、いわゆるNULL終端文字列へのポインタが得られて
.NETのStringクラスは、NULL終端文字列でのコンストラクタがありますから。

QVisual C++ と Visual C++ Express Edition

の違いについて教えてください。
ExpressでもMDIを作成できるのでしょうか?

Aベストアンサー

「Express Edition」には、大雑把にリソースエディタとMFCが付いていません。あとインストーラ作成機能が無かったかな?細かな違いはだいぶありますけど。
WindowsAPIやC++/CLIを使う分には、ほぼ同等にプログラムを作る事ができます。
MDIももちろん作れますよ。

「猫でもわかるプログラミング」
http://www.kumei.ne.jp/c_lang/
のようにリソースエディタやクラスウィザードを使わない作り方をする分には、ほぼ差が無いと思います。

Qc++ stringの使い方

お世話になります。
最近c++始めました。
stringの使い方がよくわかりません。
以下のstringの使い方が問題ないか確認頂けますか。
スマホで書くため、文法が合ってないと思いますが、stringの使い方だけ確認させてください。
引数にstringで囲って渡すのは実装として普通行いますか。
やってはいけないですか。
是非ご教示ください。

#define STR1 "mojiretu"
main()
if(check(string(STR1)))



bool check(string str)

Aベストアンサー

間違っちゃいないけど、直に const string でかまわんのでは?

#include <iostream>
#include <string>

const std::string STR1 = "mojiretu";

bool even_length(const std::string& str) {
return str.length() % 2 == 0;
}

int main() {
if ( even_length(STR1) ) {
std::cout << STR1 << " : even\n";
} else {
std::cout << STR1 << " : odd\n";
}
}

QVisual C++ 2008 Express EditionとVisual c++.net standard version 2003

私は大学生なのですが、最近大学のPCでMicrosoft Visual C++ 2008 Express Editionを使って自分なりに真面目にプログラムに取り組むようになりました。
そんな中、家の中の引き出しを整理していると、数年前に興味本位で購入したVisual c++.net standard version 2003が見つかりました。当時はちょっといじっただけでほとんど放置状態でした。

そこで詳しい方にお伺いしたいのですが、『Microsoft Visual C++ 2008 Express Edition』と『Visual c++.net standard version 2003』、これからはどちらを使ってプログラムを組んでいく方が良いと思われますか?幾つかサイトで調べてみましたが、イマイチ違いが分かりませんでした。

恐らくプログラムの目的によって変わってくるとは思いますが、その辺りも含めて御教え頂けたら…(こういうことするならこっち、特に何も制限がないならこちらを勧める、など)
ちなみに今の所、Microsoft Visual C++ 2008 Express Editionで不便に思ったことはありません。

私は大学生なのですが、最近大学のPCでMicrosoft Visual C++ 2008 Express Editionを使って自分なりに真面目にプログラムに取り組むようになりました。
そんな中、家の中の引き出しを整理していると、数年前に興味本位で購入したVisual c++.net standard version 2003が見つかりました。当時はちょっといじっただけでほとんど放置状態でした。

そこで詳しい方にお伺いしたいのですが、『Microsoft Visual C++ 2008 Express Edition』と『Visual c++.net standard version 2003』、これからはどちらを使ってプ...続きを読む

Aベストアンサー

2003と2008の違いは大学生が趣味か学業のためにやる程度であれば差がないと思います.

2003から2008への変更点ですが,
・Vista対応
・64ビットCPUへの対応
・.NetFramework 3.5に対応
・コンパイラの最適化精度が上がっている

ExpressEditionは,使用用途や製品版と比べてWindows SDKなどが省かれています.

QVisial C++おけるπの使い方

自宅でCプログラミングの練習をするためVisial C++ 2008を使って
プログラムをしています。y<sin(πx)となった時の
割合などを計算するプログラムで                「M_PIが定義されていない識別子です」
とでてきます。所持している本を参考にしてもM_PI=πとして用いる
と書いてあり、math.hもインクルードしてるので原因が分からなくて
困ってます。Visial c++ではπの使い方には何か別の使い方がある
のでしょうか?よろしくお願いします。
*↓が実際に作ったプログラムです。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

int main(void){
int i,n,count=0;
double x,y,r,error;

srand((unsigned)time(NULL)); /*乱数の初期化*/

printf("How many trials?");
scanf("&d",&n);

for(i=0;i<n;i++){
x=rand()/(RAND_MAX+1.0);
y=rand()/(RAND_MAX+1.0);

if(y<sin(M_PI*x)){
count++;
}
}

r=(double)count/n; /*キャスト演算子を使用*/
error=2/M_PI-r;

printf("Result is %f (Error: %f)\n",r,error);

return 0;
}

自宅でCプログラミングの練習をするためVisial C++ 2008を使って
プログラムをしています。y<sin(πx)となった時の
割合などを計算するプログラムで                「M_PIが定義されていない識別子です」
とでてきます。所持している本を参考にしてもM_PI=πとして用いる
と書いてあり、math.hもインクルードしてるので原因が分からなくて
困ってます。Visial c++ではπの使い方には何か別の使い方がある
のでしょうか?よろしくお願いします。
*↓が実際に作ったプログラムです。
#include ...続きを読む

Aベストアンサー

★アドバイス
・math.hをインクルードする前に『_USE_MATH_DEFINES』定数を define します。

#define _USE_MATH_DEFINES
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

int main( void )
{
 :
 return 0;
}
必ず include する前に定義して下さい。

QVisual Studio 2005 C++で作成したプログラムが98で動くか

XP上のVisual Studio 2005 C++で作成したプログラム
はWindows 98上で動作するでしょうか?

Aベストアンサー

作り方による。

Windows98で動かないライブラリーや
そもそも動作に必要なライブラリーがない状態だと
動かないでしょう。

とくにクロスコンパイルするときなんか

QcygwinでのC++の使い方

cygwinでC言語で書いたプログラムを実行したいのですがcygwinを起動すると
私の名前@なにやらアルファベット
が表示され次の行に

と表示されるんですがこの後にどんなことを書けば
#include<・・・>
としてC++のプログラムを書いていくことができるんですか?そもそもcygwinの使い方が根本的に違うんですかねえ?それともメモ帳かなんかにプログラムを書き保存しそれをcygwinで実行するんですかねえ?とりあえずプログラムを実行できるようにしてください。おねがいします。

Aベストアンサー

> それともメモ帳かなんかにプログラムを書き保存しそれをcygwinで実行するんですかねえ?

おおむねその通りです。

メモ帳でも何でもよいので、エディタでソースファイルを作成してください。作成したソースファイルは、とりあえずホームディレクトリに格納するとよいでしょう(C:\cygwinにCygwinをインストールしたのであれば、C:\cygwin\home\アカウント名がホームディレクトリになります)。

作成したソースファイルがfoo.cppだった場合、

g++ foo.cpp

とすれば、a.exeという実行ファイルが同じディレクトリにできるはずです。そこで、

./a

と入力すれば、a.exeを実行することができます。

QVisual C++ 6.0とVisual C++ 2005 についてですが・・・

Visual C++ 6.0でワークスペースと呼ばれていた物がVisual C++ 2005になるとソリューションと言う名前になったと聞きました。
また、Visual C++ 6.0で製作したファイルはVisual C++ 2005でも開けるけどVisual C++ 2005製作したファイルはVisual C++ 6.0では開けないと聞いたのですがVisual C++ 2005製作したファイルをVisual C++ 6.0でも開ける様に互換性を持たせる方法はありませんか?
学校と家で使っている環境が違うので互換性がもてれば両方で使えてとても便利になります。
御存知の方がいましたら御伝授お願いします。

Aベストアンサー

ソースファイルやヘッダファイル(拡張子CPP/C/H/HPPなど)はVisual C++ 6.0と2005で共用できるので、6.0用のプロジェクトファイル&ワークスペースと、2005用のプロジェクトファイル&ソリューションファイルを用意すれば両方の環境で開発を進めることができるでしょう。

但し、以下の点にご注意下さい。
・ソースファイルの追加や削除は両方のプロジェクトに対して行うこと。
・Visual C++6.0ではManaged C++が使えないのでManaged C++は使わないこと。
・MFCの仕様がだいぶ違うので、MFCも避けること。MFCを知り尽くしているのでしたらチャレンジはご自由に。
・C++コンパイラとしても若干仕様が違うので(for文内で定義された変数のスコープなど)、常に両方の環境でコンパイルできるか考えながら開発する必要があること。


人気Q&Aランキング

おすすめ情報